使用jquery遍历xml的子节点

Traversing through child nodes of xml using jquery

本文关键字:子节点 xml 遍历 jquery 使用      更新时间:2023-09-26

我对这个概念很陌生,正在努力实现以下要求。

我有下面的xml对象在我的javascript变量名为"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)包含多个

通过jQuery加载xml:

var $xml = $(detailJSTotal);

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

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

尝试Jquery的xmlParser;这样的

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"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>