如何使用XPath从XML中选择多个节点?

时间:2014-10-11 22:51:12

标签: xml xpath

从XML返回多个节点的XPath语法是什么?

说我有这样的XML:

<Contacts>
  <Contact>
    <Name>
      <FirstName>Andre</FirstName>
      <LastName>Levy</LastName>
    </Name>
    <DOB>
      <Year>1970</Year>
      <Month>5</Month>
      <Day>13</Day>
    </DOB>
  </Contact>
  <Contact>
    <Name>
      <FirstName>Bob</FirstName>
      <LastName>Fisher</LastName>
    </Name>
    <DOB>
      <Year>1983</Year>
      <Month>7</Month>
      <Day>24</Day>
    </DOB>
  </Contact>
</Contacts>

XPath会给我什么:

<Contacts>
  <Contact>
    <FirstName>Andre</FirstName>
    <Year>1970</Year>
  </Contact>
  <Contact>
    <FirstName>Bob</FirstName>
    <Year>1983</Year>
  </Contact>
</Contacts>

我试过了://FirstName | //Year

但这只会产生:

<FirstName>Andre</FirstName>
<FirstName>Bob</FirstName>
<Year>1970</Year>
<Year>1983</Year>

是什么给出了?

1 个答案:

答案 0 :(得分:2)

可以在XPath中选择多个节点,但无法以您请求的输出中显示的方式重新排列XML。

另请注意:

  1. 您的示例XML格式不正确;它必须有一个根 元件。
  2. 您确实可以选择多个节点作为标题问题 使用你建议的联合运算符|但是......
  3. 您想要的XML不适用于 选择 ,哪个XPath 但它可以通过 转换 来构建,XSLT就是这样做的 (如果您愿意将所需的XML包装在一个单独的中 封闭根元素)。