gpt4 book ai didi

ruby - Nokogiri:倾斜访问名为 name 的节点

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:01 24 4
gpt4 key购买 nike

我正在尝试解析如下所示的 xml:

<lesson>
<name>toto</name>
<version>42</version>
</lesson>

使用 Nokogiri::Slop

我可以通过 lesson.version 轻松访问类(class),但我无法访问 lesson.name,因为在这种情况下名称指的是节点的名称(类(class))。

有什么方法可以访问 child 吗?

最佳答案

作为变体,您可以试试这个:

doc.lesson.elements.select{|el| el.name == "name"}

为什么?仅仅因为这个基准:

require 'nokogiri'
require 'benchmark'

str = '<lesson>
<name>toto</name>
<version>42</version>
</lesson>'

doc = Nokogiri::Slop(str)

n = 50000
Benchmark.bm do |x|
x.report("select") { n.times do; doc.lesson.elements.select{|el| el.name == "name"}; end }
x.report("search") { n.times do; doc.lesson.search('name'); end }
end

这给了我们结果:

#=>           user     system      total        real
#=> select 1.466000 0.047000 1.513000 ( 1.528153)
#=> search 2.637000 0.125000 2.762000 ( 2.777278)

关于ruby - Nokogiri:倾斜访问名为 name 的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com