XPath选择儿童特定儿童&亲

时间:2009-07-16 13:50:16

标签: xml xpath

这是我的结构:

<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]

这可能吗?

2 个答案:

答案 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