【发布时间】:2022-11-10 22:05:36
【问题描述】:
如果给出了Detail ID = "5",我如何找到Item No = "0002" ?
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);
}
}
}
【问题讨论】:
标签: javascript xml xpath