gpt4 book ai didi

Xpath:过滤掉 child

转载 作者:行者123 更新时间:2023-12-03 15:31:16 25 4
gpt4 key购买 nike

我正在寻找过滤掉某些 child 的 xpath 表达式。一个子节点必须包含一个带有 B 的 CCC 节点。

来源:

<AAA>
<BBB1>
<CCC>A</CCC>
</BBB1>
<BBB2>
<CCC>A</CCC>
</BBB2>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>

结果应该是这样:

<AAA>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>

希望有人可以帮助我。

乔斯

最佳答案

XPath 是一种用于 XML 文档的查询语言。因此它只能选择节点 来自现有的 XML 文档 -- 它不能修改 XML 文档或创建新的 XML 文档 .

使用 XSLT 来转换 XML 文档并从中创建新的 XML 文档。

在这种特殊情况下 :

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/*/*[not(CCC = 'B')]"/>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:
<AAA>
<BBB1>
<CCC>A</CCC>
</BBB1>
<BBB2>
<CCC>A</CCC>
</BBB2>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>

产生了想要的正确结果:
<AAA>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>

关于Xpath:过滤掉 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com