ruby Nokogiri支持哪个版本的xpath?

fkaflof6  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(93)

我找不到Nokogiri支持的xpath版本的官方声明。有人能帮我吗?事实上,我想提取一些元素,这些元素的属性以指定的子字符串开始。例如,我想获取所有具有category属性的Book元素,该属性以字符C开头。如何使用nokogiri?

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy?-->
<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

字符串

edqdpe6u

edqdpe6u1#

我不知道Nokogiri支持哪个特定版本的XPath。但是,你可以这样做:
我想获取所有具有category属性的book元素,该属性以字符C开头。
使用XPath的starts-with

doc = Nokogiri::XML(your_xml)
doc.search('//book[starts-with(@category, "C")]').each { |e| puts e['category'] }
# output is:
# COOKING
# CHILDREN

字符串
你也可以使用CSS3的“begins with”选择器:

doc = Nokogiri::XML(your_xml)
doc.search('book[category^=C]').each { |e| puts e['category'] }
# output is:
# COOKING
# CHILDREN

envsm3lx

envsm3lx2#

我在这里找到了Nokogiri的xpath版本。
最后,我发现当前版本(1.15.3)安装了xpath版本1.0。
资料来源:https://nokogiri.org/#features-overview。

相关问题