0

您好我正在尝试使用 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 代码从第一个获取节点值。

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

如果我尝试使用 ...[i].childNodes[1].nodeValue,js 将在该行抛出一个错误,提示“需要对象”。
我试过了

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

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

而且还是一无所有!

4

2 回答 2

0

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

例如:

<alarmid>Outage</alarmid>

有 1 个子节点;带有 text == "Outage" 的 textNode。

于 2012-07-31T15:42:45.173 回答
0

我明白了,我只需在下标中添加一个 ...[i+1].childNodes[0].nodeValue 即可获得第二个警报元素。

于 2012-07-31T15:54:45.057 回答