2012-07-31 15 views
0

嗨我想訪問一個節點的元素與childNodes。這裏是一個示例XMLjavascript XML ChildNodes

<ROOT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<node> 
<nodeid>28</nodeid> 
<account_no xsi:nil="true" /> 
<address1>15 CANCUN CT</address1> 
<serial_no>112199543</serial_no> 
<x_lat>25.95513358000</x_lat> 
<y_lon>-97.49027147000</y_lon> 
<alarm> 
    <alarmid>Outage</alarmid> 
    <alarmtime>2012-07-30T14:46:29</alarmtime> 
</alarm> 
<alarm> 
    <alarmid>Restore</alarmid> 
    <alarmtime>2012-07-30T14:48:37</alarmtime> 
</alarm> 
</node> 
</ROOT> 

我試圖讓第二個childNodes,但不能使用JavaScript。然而,我可以通過這個js代碼從第一個獲得節點值。

var alarmId = xmlDocOut.getElementsByTagName('alarmid')[i].childNodes[0].nodeValue; 
var alarmTime = xmlDocOut.getElementsByTagName('alarmtime')[i].childNodes[0].nodeValue; 

如果我嘗試使用... [我] .childNodes [1] .nodeValue的JS將拋出一個錯誤,說該線路上的「必選對象」。
我試過

...[i].childNodes[1...4].nodeValue 

...[i].childNodes[0].childNodes[0].nodeValue. 

,仍然沒有!

回答

0

我明白了,我只需要添加一個... [i + 1] .childNodes [0] .nodeValue到下標以獲得第二個報警元素。

0

xmlDocOut.getElementsByTagName('alarmid')[i] .childNodes [1]不存在;每個alarmId節點只有1個子節點;一個文本節點。

例如:

<alarmid>Outage</alarmid> 

具有1個childNode;帶文本的textNode ==「停機」。