xpath - 如何通过被引用的属性查找元素?

标签 xpath reference

我有一个关于将XPath表达式作为属性值传递的快速问题。
所以我有以下文件:

<?xml version="1.0"?>

<personnel>
<person id="EMP01" >
  <name><family>Lee</family><given>Ho</given></name>
  <email>lee.ho@foo.com</email>
  <salary>100000</salary>
  <links>
    <subordinate>EMP02</subordinate>
    <subordinate>EMP03</subordinate>
  </links>
</person>

<person id="EMP02">
  <name><family>Chan</family><given>Tai Man</given></name>
  <email>chan.tai.man@foo.com</email>
  <salary>20000</salary>
  <links>
    <manager>EMP01</manager>
    <subordinate>EMP04</subordinate>
    <subordinate>EMP05</subordinate>
  </links>
</person>

<person id="EMP03">
  <name><family>Cheung</family><given>Siu Fan</given></name>
  <email>cheung.siu.fan@foo.com</email>
  <salary>20200</salary>
  <links>
    <manager>EMP01</manager>
    <subordinate>EMP07</subordinate>
  </links>
</person>

<person id="EMP04">
  <name><family>Ng</family><given>Ho</given></name>
  <email>ng.ho@foo.com</email>
  <salary>11000</salary>
  <links>
    <manager>EMP02</manager>
  </links>
</person>

<person id="EMP05">
  <name><family>Chow</family><given>Sing Sing</given></name>
  <email>chow.sing.sing@foo.com</email>
  <salary>20050</salary>
  <links>
    <manager>EMP02</manager>
    <subordinate>EMP06</subordinate>
  </links>
</person>

<person id="EMP06">
  <name><family>Law</family><given>Lai</given></name>
  <email>law.lai@foo.com</email>
  <salary>5050</salary>
  <links>
    <manager>EMP05</manager>
  </links>
</person>

<person id="EMP07">
  <name><family>Chan</family><given>Siu Ming</given></name>
  <email>chan.siu.ming@foo.com</email>
  <salary>5000</salary>
  <links>
    <manager>EMP03</manager>
  </links>
</person>




而且我需要一个XPath表达式来获取名称为Law的家庭管理者的人结点,因此在这种情况下为周先生。但是,如何在XPath中获得此信息而无需显式使用名称Chow?

我的尝试是:

personnel/person[@id="personnel/person/name/family='Law'"] 


但这实际上不起作用...我可以将XPath作为这样的属性的值传递,还是该怎么做?

最佳答案

如果希望将字符串作为XPath表达式而不是文字字符串读取,请不要使用引号。试试这样的事情:

/personnel/person[@id=/personnel/person[name/family='Law']/links/manager]/name/family


xpathtester demo

输出:

<family>Chow</family>

关于xpath - 如何通过被引用的属性查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34065531/

相关文章:

c++ - 如何对数组 int (*&Test)[10] 进行赋值?

xml - XPath 获取没有父节点的所有子节点(元素、注释和文本)

xml - 使用 Perl 解析 XML 文件

java - JIT 优化和弱引用

C++通用引用和LRef参数的类型推导

c# - 类库在使用时丢失引用(dll)

xpath - 如何使用 Xpath 可视化工具

java - 为什么 XPath namespace-uri() 不能与 Java 开箱即用?

javascript - 如何在 python 中使用 selenium 驱动程序单击链接而不知道 anchor 标记内的文本

c++ - 我怎样才能在 vector 中有一对引用?