簡體   English   中英

使用jquery遍歷xml的子節點

[英]Traversing through child nodes of xml using jquery

我對這個概念非常陌生,並努力實現以下要求。

我的JavaScript變量名為“ detailJSTotal”中具有以下xml對象。

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

在此,根元素(響應)包含多個<div>元素。 每個<div>元素都包含<label>元素及其值和<a>元素。

我的要求是為<div>元素的給定<標簽>'ID'值獲取<a>元素的“ onclick”屬性值。

例:

我可能想通過提供ID <label>值為'812161'來獲取<a>元素的“ onclick”屬性值。 在上面的示例中,返回值應為“ text4.xml”。

只需通過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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM