XPath 根据子项的子值选择元素

Posted

技术标签:

【中文标题】XPath 根据子项的子值选择元素【英文标题】:XPath to select element based on childs child value 【发布时间】:2012-03-29 19:06:23 【问题描述】:

尝试根据其中一个子元素的值来选择一个元素

考虑以下但不起作用,感谢任何帮助,谢谢

./book[/author/name = 'John']

./book[/author/name text() = 'John']

想要作者姓名 = 'John' 的所有书籍

Xml 文件

<list>
   <book>
      <author>
         <name>John</name>
         <number>4324234</number>
      </author>
      <title>New Book</title>
      <isbn>dsdaassda</isbn>
   </book>
   <book>...</book>
   <book>...</book>
</list>

【问题讨论】:

【参考方案1】:

差不多了。在你的谓词中,你想要一个相对路径,所以改变

./book[/author/name = 'John'] 

到任一

./book[author/name = 'John'] 

./book[./author/name = 'John'] 

你会匹配你的元素。您当前的谓词返回文档的根目录以查找 author

【讨论】:

没有. 对我不起作用(需要./author/name 是否可以在函数中使用这种语法?例如,如何实现诸如./book[contains(author/name, "John")]之类的东西? @OgrishMan 新问题应该进入New Question,但在那之前我会尝试一下!顺便说一下,一般来说,对于 xpath 中的字符串文字,您需要单引号 ' 而不是双引号 "

以上是关于XPath 根据子项的子值选择元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JS根据组合框中的子值设置值?

根据子值填充父 List 元素

ElementTree XPath - 根据属性选择元素

XPath根据兄弟/堂兄文本选择元素?

XPath 中选择多个子项的 // 和 /descendant 之间的区别

如果不包含某些字符串,则替换某些子值?还是重写 XPATH 查询?网站抓取