2012-04-18 69 views
0

我已經有一段JavaScript代碼現在已經工作得很好,可以從傳入的xml通信中獲取值,但它突然停止報告某些標記發現的任何元素。我做了一些觀察,似乎只有數字標籤纔會受此影響,一旦我切換回字母,一切都很好。爲什麼我不能使用數字有什麼原因嗎?javascript xml getElementsByTagName其中標記是一個數字

JavaScript代碼:

xmlhttp.onreadystatechange=function() 
{ 
    xmlDoc=xmlhttp.responseXML; 
    x=xmlDoc.getElementsByTaName("VAR"); 
    alert(x.length); // <- reports 0 when numbers are used as tags 
    var dataBack = []; 
    for (j=0;j<x.length;j++) { 
     dataBack[j] = x[0].getElementsByTagName(x[j])[0].childNodes[0].nodeValue); 
    } 
    useXMLdata(dataBack); 
} 

我曾嘗試加入一個字母到我的號碼標籤和奇蹟般地開始工作。我正在使用它來實際捕捉標籤,但我很好奇爲什麼我不能只使用數字。

回答

3

僅爲數字的元素(例如<8>Some content</8>)似乎不是有效的XML。

XML specification很漂亮,但section 3.1定義了開始標籤的命名。開始標籤名稱必須以NameStartChar字符開頭,然後繼續使用任意數量的NameChar字符。

NameStartChar似乎是NameChar的子集,其中不包括數字0-9等等。因此,有效的標籤名稱不能以數字開頭。

我懷疑你的XML會驗證它是否包含XML元素,如<8>Something</8>。這是否是你的JavaScript失敗的原因我不知道,但足以不以這種方式構造XML。

編輯

嘗試將下面的XML爲validator

<?xml version="1.0" ?> 
<Root> 
    <Child> 
    <1xyz>Content</1xyz> 
    </Child> 
</Root> 

這給了錯誤無效的元素名稱<1xyz>標籤。即使是SO也不喜歡它,因此缺乏語法突出!

+0

感謝您的信息!我很好奇,這讓我滿意,將來我會更加小心標籤名稱。 – Matt 2012-04-19 14:17:14

相關問題