Item No = "0002" 如果Detail ID = "5"給出,我如何找到?
const Detail_id= "5";
let xRes = xmlDoc.evaluate(`//Item/Details/Detail[@Id="${Detail_id}"]`,
xmlDoc.documentElement);
我現在如何向上尋找Item No = "0002"
<xml>
<Items>
<Item No="0001">
<Details>
<Detail Id="3">
<Colors>
<Color colorName="green" />
<Color colorName="yellow" />
</Colors>
</Detail>
</Details>
</Item>
<Item No="0002">
<Details>
<Detail Id="5">
<Colors>
<Color colorName="purple" />
<Color colorName="pink" />
</Colors>
</Detail>
<Detail Id="6">
<Colors>
<Color colorName="grey" />
<Color colorName="orange" />
</Colors>
</Detail>
</Details>
</Item>
</Items>
</xml>
下面的代碼作業正常。為了向下。下面給出了所有細節<Item No="0002">。像 Detail Ids 和 colorNames
const SEARCH_NO = "0002";
let xRes = xmlDoc.evaluate(`//Item[@No="${SEARCH_NO}"]`, xmlDoc.documentElement);
const foundNode = xRes.iterateNext();
if (foundNode) {
xRes = xmlDoc.evaluate('Details/Detail', foundNode);
let detailNode;
while ( !!( detailNode = xRes.iterateNext() ) ) {
const li = showDetail(detailNode.getAttribute("Id"));
const colXres = xmlDoc.evaluate('Colors/Color/@colorName', detailNode);
let colorTextNode;
while ( !!( colorTextNode = colXres.iterateNext() ) ) {
showColor(li, colorTextNode.textContent);
}
}
}
uj5u.com熱心網友回復:
選擇目標后,不要“向上”,而是通過向其添加謂詞來Detail調整 XPath 以直接選擇目標。Item
改變
//Item/Details/Detail[@Id="${Detail_id}"]
至
//Item[@No="${SEARCH_NO}" and Details/Detail/@Id="${Detail_id}"]
或者,如果您不知道SEARCH_NO并且只想找到Item目標的祖先Detail,
//Item[Details/Detail/@Id="${Detail_id}"]
來自評論:
是的,我需要找到 search_no。
然后
//Item[Details/Detail/@Id="${Detail_id}"]/@No
也可以看看
- 使用謂詞而不是
parent::orancestor::軸
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531613.html
