这是我的结构:
<AllCharges>
<Charge>
<ID>1</ID>
<Type>A</Type>
</Charge>
<Charge>
<ID>2</ID>
<Type>A</Type>
</Charge>
<Charge>
<ID>3</ID>
<Type>B</Type>
</Charge>
</AllCharges>
我想要的是完整的结构,但我只想要Type = A的结果。我发现的困难部分是拉回父xml节点。以下是我的结果应该是什么样子的示例:
<AllCharges>
<Charge>
<ID>1</ID>
<Type>A</Type>
</Charge>
<Charge>
<ID>2</ID>
<Type>A</Type>
</Charge>
</AllCharges>
我认为XPath看起来像这样,但它不起作用: / AllCharges [//类型= A]
这可能吗?
答案 0 :(得分:4)
/AllCharges/Charge[Type='A']
应该这样做。
表达式为:“选择其父级为AllCharges的任何Charge元素,其子元素名为Type,其文本值为'A'。”
在以下XSLT模板中测试它:
<xsl:template match="/">
<AllCharges>
<xsl:copy-of select="/AllCharges/Charge[Type='A']"/>
</AllCharges>
</xsl:template>
输出结果为:
<AllCharges>
<Charge>
<ID>1</ID>
<Type>A</Type>
</Charge>
<Charge>
<ID>2</ID>
<Type>A</Type>
</Charge>
</AllCharges>
答案 1 :(得分:2)
xpath不会改变XML,只会在XML文档中返回结果。你可以搜索type = a的所有'charge'元素来获得你想要的东西。
如果要转换文档,则需要查看XSL