2012-03-22 3 views
1

Я пишу XML-файл в HTML-файл, используя JavaScript.JavaScript разрывается при чтении закрывающего тега в XML

Вот JavaScript Я использую:

if(window.XMLHttpRequest){ 
    xmlhttp=new XMLHttpRequest(); 
} 
else{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.open("GET","file.xml",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByTagName("tagParent"); 

document.write(x.getElementsByTagName("tagChild")[0].childNodes[0].nodeValue); 

Сценарий будет работать на весь для самозапорных элементов XML (<element/>), за исключением.

Пример XML-файл:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<tagParent> 
    <tagChild/> 
</tagParent> 

Разрывы скрипта и останавливается, когда он достигает сами закрывающий тег.

Что мне нужно сделать, чтобы получить либо выход 0, либо ""? Почему он ломается?

ответ

2

Это нарушение, потому что элемент пуст. У него нет детей, поэтому, когда вы пытаетесь получить nodeValue первого ребенка, это ошибки, потому что undefined не имеет свойства 0.

Вы хотите что-то вдоль линий:

var dataNodes, value; 
dataNodes = x.getElementsByTagName("tagChild")[0].childNodes; 
if (dataNodes.length) { 
    value = dataNodes[0].nodeValue; 
} else { 
    value = 0; 
} 
document.write(value); 
+0

Что такое логика, я мог бы использовать, чтобы обойти эту проблему. Я пробовал этот код, но он не работает: 'if (x.getElementsByTagName (" tagChild "). ParentNode! == null) {' – Daniel

+0

Спасибо, это сработало отлично! – Daniel

Смежные вопросы