javascript XML ChildNodes

时间:2012-07-31 15:34:14

标签: javascript xml nodes

您好我正在尝试使用childNodes访问节点的元素。这是一个示例XML

<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代码从第一个获得nodevalues。

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

如果我尝试使用... [i] .childNodes [1] .nodeValue,js将在该行上抛出一个错误,上面写着'Object Required'。
我试过了

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

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

仍然没有!

2 个答案:

答案 0 :(得分:0)

xmlDocOut.getElementsByTagName('alarmid')[i] .childNodes [1]不存在;每个alarmId节点只有1个子节点;文本节点。

例如:

<alarmid>Outage</alarmid>

有1个childNode;带有text ==“Outage”的textNode。

答案 1 :(得分:0)

我知道了,我只需要在下标中添加一个... [i + 1] .childNodes [0] .nodeValue来获取第二个报警元素。