Xpath:过滤掉孩子
我正在寻找一个可以过滤掉某些子项的 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>
希望有人能帮助我。
乔斯
I'm looking for a xpath expression that filters out certain childs. A child must contain a CCC node with B in it.
Source:
<AAA>
<BBB1>
<CCC>A</CCC>
</BBB1>
<BBB2>
<CCC>A</CCC>
</BBB2>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>
This should be the result:
<AAA>
<BBB3>
<CCC>B</CCC>
</BBB3>
<BBB4>
<CCC>B</CCC>
</BBB4>
</AAA>
Hopefully someone can help me.
Jos
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
XPath 是 XML 文档的查询语言。因此,它只能从现有 XML 文档中选择节点——它不能修改 XML 文档或创建新的 XML 文档。
使用 XSLT 转换 XML 文档并从中创建新的 XML 文档。
在这种特殊情况下:
当此转换应用于提供的 XML 文档时:
生成所需的正确结果:
XPath is a query language for XML documents. As such it can only select nodes from existing XML document(s) -- it cannot modify an XML document or create a new XML document.
Use XSLT in order to transform an XML document and create a new XML document from it.
In this particular case:
when this transformation is applied on the provided XML document:
the wanted, correct result is produced:
为了选择所有所需的元素和文本节点,请使用此 XPATH:
这可以通过更简单/轻松地使用 XPATH 和修改后的身份转换 XSLT 来实现:
In order to select all of the desired element and text nodes, use this XPATH:
This could be achieved with a more simply/easily using XPATH with a modified identity transform XSLT:
试试这个,
它将给出所有内部文本为 B 的 CCC 节点。
try this ,
It shall give all CCC nodes where the innertext is B.
如果您想获得 AAA、BBB3 和 BBB4,您可以使用以下内容
如果只有 BBB3 和 BBB4 那么
If you want to get AAA, BBB3 and BBB4 you can use the following
If BBB3 and BBB4 only then