2017-03-15 7 views
0

Ich versuche derzeit, ein Restaurant-Menü mithilfe einer XML-Menüdatei zu erstellen. Bis jetzt hat alles perfekt funktioniert, ich habe sogar eine Hilfsfunktion erstellt, um alle benötigten Tabellen einfach einzurichten, aber wenn ich die "DRINKS" übergebe, bekomme ich den Fehler "Uncaught TypeError: kann die Eigenschaft 'childNodes' nicht lesen". Ich bin sehr verwirrt, weil dies technisch (zumindest in meinen Augen) genauso funktionieren sollte wie der Rest der Daten, die ich verarbeitet habe. Kann mir jemand sagen, was ich falsch mache, wenn ich den "DRINKS" -Teil der XML-Datei verarbeite?XML-Verarbeitungsfehler JavaScript

Hier ist mein javascript:

function processXML(data){ 
    var parser = new DOMParser(); 
    var xml = parser.parseFromString(data.responseText, "text/xml"); 

    //Process breakfast 
    var html = document.getElementById("breakfast"); 
    var tempHtml = tableCreator(xml, "BREAKFAST"); 
    html.innerHTML += tempHtml; 

    //Process brunch 
    html = document.getElementById("brunch"); 
    tempHtml = tableCreator(xml, "BRUNCH"); 
    html.innerHTML += tempHtml; 

    //Process lunch 
    html = document.getElementById("lunch"); 
    tempHtml = tableCreator(xml, "LUNCH"); 
    html.innerHTML += tempHtml; 

    //Process dinner 
    html = document.getElementById("dinner"); 
    tempHtml = tableCreator(xml, "DINNER"); 
    html.innerHTML += tempHtml; 

    //Process drinks 

    html = document.getElementById("drinks"); 
    tempHtml = tableCreator(xml, "DRINKS"); 
    html.innerHTML += tempHtml; 

} 

//Simple table creator function to setup our menu 
function tableCreator(xml, tag){ 

    var mainElement = xml.getElementsByTagName(tag)[0].childNodes; 
    var tempHtml = "<table>"; 
    for(var i = 0; i < mainElement.length; i++){ 
     var temp = mainElement[i].childNodes; 
     tempHtml += "<tr>"; 
     for(var j = 0; j < temp.length; j++){ 
      tempHtml += "<td>" + temp[j].innerHTML + "</td>"; 
     } 
     tempHtml += "</tr>"; 
    } 
    tempHtml += "</table>"; 
    return tempHtml; 
} 

Hier ist die XML-Datei "restaurant_menu.xml":

<?xml version="1.0" encoding="UTF-8"?> 
<MENU> 
    <BREAKFAST> 
    <APPETIZER><NAME>Fruit Bowl</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <SALAD><NAME>Caeser SALAD</NAME><PRICE>3.90</PRICE></SALAD> 
    <SOUP><NAME>Chicken Noodle</NAME><PRICE>5.90</PRICE></SOUP> 
    <ANTREE><NAME>Omelet</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Scrambled Eggs</NAME><PRICE>20.90</PRICE></ANTREE> 
    <DESSERT><NAME>Apple Pie</NAME><PRICE>7.90</PRICE></DESSERT> 
    </BREAKFAST> 
    <BRUNCH> 
    <APPETIZER><NAME>Fruit Bowl</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <APPETIZER><NAME>EggPlant Frits</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <SALAD><NAME>House Salad</NAME><PRICE>3.90</PRICE></SALAD> 
    <SOUP><NAME>Chicken Noodle</NAME><PRICE>5.90</PRICE></SOUP> 
    <ANTREE><NAME>French Toast</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Omelet</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Scrambled Eggs</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Hamburg</NAME><PRICE>20.90</PRICE></ANTREE> 
    <DESSERT><NAME>Apple Pie</NAME><PRICE>7.90</PRICE></DESSERT> 
    </BRUNCH> 
    <LUNCH> 
    <APPETIZER><NAME>Calamari</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <SALAD>Caeser Salad<PRICE>3.90</PRICE></SALAD> 
    <SALAD><NAME>Arugula Salad</NAME><PRICE>3.90</PRICE></SALAD> 
    <SOUP><NAME>Chicken Noodle</NAME><PRICE>5.90</PRICE></SOUP> 
    <SOUP><NAME>Italian Wedding Soup</NAME><PRICE>5.90</PRICE></SOUP> 
    <ANTREE><NAME>Steak</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Hamburg</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Angel Hair Pasta</NAME><PRICE>20.90</PRICE></ANTREE> 
    <DESSERT><NAME>Tiramisu</NAME><PRICE>7.90</PRICE></DESSERT> 
    </LUNCH> 
    <DINNER> 
    <APPETIZER><NAME>Calamari</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <APPETIZER><NAME>EggPlant Frits</NAME><PRICE>10.90</PRICE></APPETIZER> 
    <SALAD>House Salad<PRICE>3.90</PRICE></SALAD> 
    <SALAD><NAME>Caeser Salad</NAME><PRICE>3.90</PRICE></SALAD> 
    <SOUP>Chicken Noodle<PRICE>5.90</PRICE></SOUP> 
    <SOUP><NAME>Italian Wedding Soup</NAME><PRICE>5.90</PRICE></SOUP> 
    <SOUP><NAME>Roasted Patato</NAME><PRICE>5.90</PRICE></SOUP> 
    <ANTREE><NAME>Steak</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Hamburg</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Angel Hair Pasta</NAME><PRICE>20.90</PRICE></ANTREE> 
    <ANTREE><NAME>Roasted Duck</NAME><PRICE>20.90</PRICE></ANTREE> 
    <DESSERT><NAME>Apple Pie</NAME><PRICE>7.90</PRICE></DESSERT> 
    <DESSERT><NAME>Tiramisu</NAME><PRICE>7.90</PRICE></DESSERT> 
    <DESSERT><NAME>Creme Brule</NAME><PRICE>7.90</PRICE></DESSERT> 
    </DNNER> 
    <DRINKS> 
    <BEER><NAME>Bud Weiser</NAME><PRICE>5.90</PRICE></BEER> 
    <BEER><NAME>Hefe Weissbier</NAME><PRICE>6.90</PRICE></BEER> 
    <WINE><NAME>Cabernet Sauvignon</NAME><FROM>Napa Valley</FROM><PRICE>15.90</PRICE></WINE> 
    <WINE><NAME>Margaux</NAME><PRICE>50.90</PRICE></WINE> 
    <WINE><NAME>Pinot Noir</NAME><FROM>Napa Valley</FROM><PRICE>12.90</PRICE></WINE> 
    <WINE><NAME>Chianti</NAME><PRICE>10.90</PRICE></WINE> 
    <COFFEE><NAME>Star Bucks</NAME><PRICE>3.90</PRICE></COFFEE> 
    <SODA>Coca Cola<PRICE>3.90</PRICE></SODA> 
    <SODA>Sprite<PRICE>3.90</PRICE></SODA> 
    </DRINKS> 
</MENU> 

Antwort

0

Ich verschwendete diese Websites Zeit. Mein Fehler. Meine Lehrer enthalten XML-Datei hatte kein korrekt geschlossenes Tag

Verwandte Themen