2011-04-19 64 views
0

我有一些問題導航我的XML文件。這裏是我的文件的結構:jQuery XML導航

<m_params enc:itemType="enc:Struct" enc:arraySize="4" xsi:type="enc:Array"> 
    <item xsi:type="enc:Struct"> 
     <m_name xsi:type="xsd:string">image</m_name> 
     <m_value xsi:type="xsd:string">9f00de47f9f07ec0c7389875e4739c2b.png</m_value> 
     <m_numType xsi:type="xsd:int">3</m_numType> 
    </item> 
    <item xsi:type="enc:Struct"> 
     <m_name xsi:type="xsd:string">weblink</m_name> 
     <m_value xsi:type="xsd:string">http://www.xxx.com</m_value> 
     <m_numType xsi:type="xsd:int">2</m_numType> 
    </item> 
    <item xsi:type="enc:Struct"> 
     <m_name xsi:type="xsd:string">redirect-type</m_name> 
     <m_value xsi:type="xsd:string">2</m_value> 
     <m_numType xsi:type="xsd:int">0</m_numType> 
    </item> 
    <item xsi:type="enc:Struct"> 
     <m_name xsi:type="xsd:string">is-logo</m_name> 
     <m_value xsi:type="xsd:string">1</m_value> 
     <m_numType xsi:type="xsd:int">0</m_numType> 
    </item> 

所以基本上我需要得到「ENC:ARRAYSIZE」屬性,然後進行一個循環與它的價值(在這裏4次)。

然後獲得該項目的所有節點值(m_name,m_value,m_numType)

所以其實我這樣做是爲了獲得ARRAYSIZE(它的工作)

var node = XMLDoc.getElementsByTagName("m_params")[0].getAttribute("enc:arraySize"); 

但他們的時候我試圖讓m_name例如節點值,它不工作,我不明白:

var node = XMLDoc.getElementsByTagName("m_value")[0]; 
    alert(node.nodeValue); 

回答

2

雖然它可能不是第一次看邏輯,但文本存儲在文本ñ ode,它是你的m_value節點的子節點。試試這個:

var node = XMLDoc.getElementsByTagName("m_value")[0]; 
var textnode = node.childNodes[0]; 
alert(textnode.nodeValue); 

至於循環,試試這個(未經檢驗,未優化):

var items = XMLDoc.getElementsByTagName("item"); 
for(var i = 0; i < items.length; i++){ 
    var item = items[i]; 

    var name = item.getElementsByTagName("m_name")[0].childNodes[0].nodeValue; 
    var value = item.getElementsByTagName("m_value")[0].childNodes[0].nodeValue; 
    var numType = item.getElementsByTagName("m_numType")[0].childNodes[0].nodeValue; 

    // Do whatever you want with your values 
} 

有關XML DOM解析的詳細信息請參見http://w3schools.com/dom/default.asp

+0

謝謝老兄,它的工作原理,以及什麼關於循環? – Sindar 2011-04-19 11:36:39

+0

增加了一些未經測試的循環代碼。 – DarthJDG 2011-04-19 11:48:27