通过XPath提取属性节点的值

我如何通过XPath提取属性节点的值?

示例XML文件是:

<parents name='Parents'>
  <Parent id='1' name='Parent_1'>
    <Children name='Children'>
      <child name='Child_2' id='2'>child2_Parent_1</child>
      <child name='Child_4' id='4'>child4_Parent_1</child>
      <child name='Child_1' id='3'>child1_Parent_1</child>
      <child name='Child_3' id='1'>child3_Parent_1</child>
    </Children>
  </Parent>
  <Parent id='2' name='Parent_2'>
    <Children name='Children'>
      <child name='Child_1' id='8'>child1_parent2</child>
      <child name='Child_2' id='7'>child2_parent2</child>
      <child name='Child_4' id='6'>child4_parent2</child>
      <child name='Child_3' id='5'>child3_parent2</child>
    </Children>
  </Parent>
</parents>

到目前为止,我有这个XPath字符串:

//Parent[@id='1']/Children/child[@name]  

它只返回child元素,但我想要具有name属性的值。

对于我的示例XML文件,以下是我希望输出的内容:

Child_2
Child_4
Child_1
Child_3

//Parent[@id='1']/Children/child/@name 

您的原始child[@name]表示具有属性name的元素child元素。 你想要child/@name


要获取值(不带属性名称),请使用string()

string(//Parent[@id='1']/Children/child/@name)

fn:string()函数会将其参数的值作为xs:string 。 如果它的参数是一个属性,它将因此将该属性的值作为xs:string


你应该使用//Parent[@id='1']/Children/child/data(@name)

这些属性不能被序列化,所以你不能以xml查找结果返回它们。 你需要做的是使用data()函数从属性获取数据。

链接地址: http://www.djcxy.com/p/78163.html

上一篇: Extract value of attribute node via XPath

下一篇: XPath: How to select elements based on their value?