使用jquery遍历xml的子节点

时间:2016-10-18 10:54:39

标签: javascript jquery dom

我对这个概念很陌生,并努力达到以下要求。

我在我的javascript变量中有以下xml对象名为" detailJSTotal"。

<response>
<div>
    <p>
        <label>
            ID:
        </label>
        812161
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="text4.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812162
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="test2.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812163
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="text.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812164
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="test1.xml">
        more...
    </a>
</div>

这里根元素(响应)包含多个&lt; div>元素。每个&lt; div> element包含&lt;标签&gt;元素及其价值和&lt; a&gt;元件。

我的要求是获得&lt;的值。 a&gt;元素&#34; onclick&#34;给定&lt;的属性标签&gt; &#39; ID&#39; a的值&lt; div>元件。

示例:

我可能希望得到&#34; onclick&#34;属性&lt; a&gt;通过提供ID&lt;标签&gt;值为&#39; 812161&#39;。返回值应为&#34; text4.xml&#34;在上面的例子中。

2 个答案:

答案 0 :(得分:1)

只需通过jQuery加载你的xml:

var $xml = $(detailJSTotal);

您现在可以使用jQuery所有jQuery函数并选择所需的所有信息。 例如,使用find()

var $label = $xml.find('label:contains("test")');
return $label.next('a').attr('onclick');

注意:未经测试,只是写出来的。

答案 1 :(得分:0)

尝试Jquery&#39; xmlParser;像这样

&#13;
&#13;
var detailJSTotal= `<response>
<div>
    <p>
        <label>
            ID:
        </label>
        812161
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="text4.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812162
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="test2.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812163
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="text.xml">
        more...
    </a>
</div>
<div>
    <p>
        <label>
            ID:
        </label>
        812164
    </p>
    <p>
        <label>
            Name:
        </label>
        252
    </p>
    <a href="javascript:void(0)" onclick="test1.xml">
        more...
    </a>
</div></response>`;
  xmlDOM = $( $.parseXML( detailJSTotal) );
function getAttrForID(id){
  console.log($($(xmlDOM).find("p:contains(" + id + ")").siblings("a")[0]).attr("onclick"));
  return $($(xmlDOM).find("p:contains(" + id + ")").siblings("a")[0]).attr("onclick");
}

console.log(getAttrForID("812161"));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;