一行 nokogiri xpath 查找

发布于 2024-11-16 21:07:10 字数 312 浏览 0 评论 0原文

当我查找 xpath 时,

b.xpath("td[@class='team']/img").each do |d|
  puts d['id']
end

元素“d”是一个 html 节点。我可以引用其中的属性。

但是当我尝试在一行中查找相同的元素时,它会作为字符串返回。

c = b.xpath("td[@class='team']/img")[0]

数组中只有一个元素 I,我不需要循环遍历任何 .each。有没有办法让这一行?

When I look up an xpath with

b.xpath("td[@class='team']/img").each do |d|
  puts d['id']
end

The element "d" is a html node. I can reference attributes in it.

But when I attempt to look up the same element in one line, it gets returned as a string.

c = b.xpath("td[@class='team']/img")[0]

There is only one element I in the array, I don't need to loop through anything .each. Is there a way to make this one line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜空下最亮的亮点 2024-11-23 21:07:10

这是我整理的一个测试:

html = '<div id="foo">bar</div>'

b = Nokogiri::HTML.fragment(html)

b.xpath(".//div").each do |d|
  puts d.class
  puts d['id']
end

c = b.xpath(".//div")[0]

puts c.class
puts c['id']

正如您所期望的,结果输出是:

Nokogiri::XML::Element
foo
Nokogiri::XML::Element
foo

所以这两种方法实际上都返回 Nokogiri::XML::Element 类型的对象。

Here is a test I put together:

html = '<div id="foo">bar</div>'

b = Nokogiri::HTML.fragment(html)

b.xpath(".//div").each do |d|
  puts d.class
  puts d['id']
end

c = b.xpath(".//div")[0]

puts c.class
puts c['id']

As you would expect, the resulting output is:

Nokogiri::XML::Element
foo
Nokogiri::XML::Element
foo

So both approaches are in fact returning an object of type Nokogiri::XML::Element.

漫漫岁月 2024-11-23 21:07:10

我最终做了这样的事情:

t = a.xpath("tr/td[@class='team']/img")
away = t[0]['id']
home = t[1]['id']

I ended up doing something like this:

t = a.xpath("tr/td[@class='team']/img")
away = t[0]['id']
home = t[1]['id']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文