解析只有某个对象包含的字段

时间:2014-01-24 15:55:05

标签: jquery xml

<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(),我该如何实现呢?

1 个答案:

答案 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