<collection>
<personRepresentaion>
<theId>1</theId>
<name>John</name>
<height>10</height>
<width>12</width>
<relationships>
<inputId>1324</inputId>
<outputId>1325</outputId>
</relationships>
</personRepresentaion>
<personRepresentaion>
<theId>2</theId>
<name>Bill</name>
<height>10</height>
<width>12</width>
</personRepresentaion>
<personRepresentaion>
<theId>3</theId>
<name>Bob</name>
<height>10</height>
<width>12</width>
<relationships>
<inputId>1324</inputId>
<outputId>1325</outputId>
</relationships>
</personRepresentaion>
</collection>
目前我是这个XML文件,我想解析字段&lt; outputId&gt;,所以我可以使用我的函数connectId(source,destination)来连接这两个对象。
问题是我正在使用如下的for循环在我的页面上显示它们:
var x=xmlDoc.getElementsByTagName("personRepresentaion");
for(i=0;i<x.length;i++) {
connectId(x[i].getElementsByTagName("theId")[0].childNodes[0].nodeValue,
x[i].getElementsByTagName("relationships")[0].getElementsByTagName("outputId")[0].childNodes[0].nodeValue);
}
但是XML中的Bill
没有字段< relationships >
,因此循环只会停止并在到达Bill时退出。
我首先需要找到HAS&lt;关系&gt;字段,然后使用for循环,然后为这些对象调用connectId(),我该如何实现呢?
答案 0 :(得分:1)
尝试
var $xml = $(xmlDoc);
$xml.find('personRepresentaion').has('outputId').has('inputId').each(function () {
var $br = $(this);
connectId($br.find('theId').text(), $br.find('outputId').text());
})
演示:Fiddle