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>