2012-03-22 4 views
1

JavaScriptを使用してXMLファイルをHTMLファイルに書き出しています。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/>)を除いてすべてのために働くだろう。ここでは

は、私が使用していたJavaScriptです。

XMLファイルの例:

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

スクリプトの区切りと、それは自己終了タグに達したときに停止します。

出力0または ""を得るには何が必要ですか?なぜそれは壊れていますか?

答えて

2

要素が空であるために壊れています。子どもがいないので、undefinedには0というプロパティがないため、最初の子のnodeValueを取得しようとするとエラーになります。私はこの問題を回避するために使用することができロジックは何

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

関連する問題