You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌套XML中获取所有符合条件的Item No属性值

问题:获取所有符合条件的Item元素No属性值

需要从给定的嵌套XML结构中,获取所有包含Id为"3"的Detail子节点的Item元素的No属性值。当前代码仅返回第一个符合条件的"0001",无法获取同样符合条件的"0002",需修改代码返回全部结果。

XML结构

<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="3">
          <Colors>
            <Color colorName="purple" />
            <Color colorName="pink" />
          </Colors>
        </Detail>
        <Detail Id="6">
          <Colors>
            <Color colorName="grey" />
            <Color colorName="orange" />
          </Colors>
        </Detail>
      </Details>
    </Item>
    <Item No="0003">
      <Details>
        <Detail Id="8">
          <Colors>
            <Color colorName="red" />
          </Colors>
        </Detail>
      </Details>
    </Item>
  </Items>
</xml>

现有代码

const search_id = "3"
const foundNo = []
let ans= xmlDoc.evaluate(`//Item[Details/Detail/@Id="${search_id}"]/@No`, xmlDoc.documentElement);
const foundNode = ans.iterateNext();
foundNo = foundNode.textContent // 仅返回Item No "0001"

修改方案

原代码仅调用了一次iterateNext(),只能获取第一个匹配节点。要拿到所有结果,需要循环调用iterateNext()直到返回null,将每个节点的内容收集到数组中:

修改后的代码

const search_id = "3";
const foundNo = [];
const xpathResult = xmlDoc.evaluate(`//Item[Details/Detail/@Id="${search_id}"]/@No`, xmlDoc.documentElement);

let currentNode;
// 循环遍历所有匹配节点
while ((currentNode = xpathResult.iterateNext()) !== null) {
  foundNo.push(currentNode.textContent);
}

// 此时foundNo数组包含所有符合条件的No值:["0001", "0002"]
console.log(foundNo);

说明

  • evaluate()返回的是XPathResult对象,iterateNext()每次调用返回下一个匹配节点,没有更多节点时返回null。
  • 通过while循环遍历所有节点,将每个节点的textContent(即No属性的值)推入foundNo数组,最终得到所有符合条件的结果。

内容的提问来源于stack exchange,提问作者Sarahrb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:55:18