是否可以从块中仅提取数据select schema_where_it_installed.gen_salt('md5');
-- For my example:
select nd.gen_salt('md5');
?
code="article"
我做<param name="Артикул" code="article">LS_745094</param>
<param name="Комментарий" code="comment"/>
<param name="Цвета" code="colors">белый, прозрачный</param>
接收所有doc.css("offer param")
我只需要一个param
答案 0 :(得分:0)
对于给定的xml
<node>
<param name="Артикул" code="article">LS_745094</param>
<param name="Комментарий" code="comment"/>
<param name="Цвета" code="colors">белый, прозрачный</param>
</node>
你可以试试这个
require 'nokogiri'
xml = Nokogiri::XML(File.open('YOUR_FILE'))
el = xml.xpath('//param[@code="article"]')
它会给你
[#<Nokogiri::XML::Element:0x3fdf8880a8ac name="param" attributes=[#<Nokogiri::XML::Attr:0x3fdf8880a7a8 name="name" value="Артикул">, #<Nokogiri::XML::Attr:0x3fdf8880a794 name="code" value="article">] children=[#<Nokogiri::XML::Text:0x3fdf8880788c "LS_745094">]>]
然后您可以获取el
el.text # => LS_745094
答案 1 :(得分:0)
目前还不清楚你在问什么,所以选择一个:
require 'nokogiri'
doc = Nokogiri::XML::DocumentFragment.parse(<<EOT)
<param name="Артикул" code="article">LS_745094</param>
<param name="Комментарий" code="comment"/>
<param name="Цвета" code="colors">белый, прозрачный</param>
EOT
doc.search('param').map(&:to_html)
# => ["<param name=\"Артикул\" code=\"article\">",
# "<param name=\"Комментарий\" code=\"comment\">",
# "<param name=\"Цвета\" code=\"colors\">"]
search
将所有匹配的节点作为NodeSet返回。如果你需要对它们进行迭代,那就没关系,但通常都是过度的。
doc.at('param')['code'] # => "article"
doc.at('param').text # => "LS_745094"
at
与search('...').first
相同,返回第一个匹配节点。所以上面的代码找到第一个<param>
并返回它。如果你知道你想要的标签总是第一个,那就很有用。
doc.at('param[code="article"]').text # => "LS_745094"
doc.at('param[name="Артикул"]')['code'] # => "article"
doc.at('param[name="Артикул"]').text # => "LS_745094"
如果需要向选择器提供更多细节,可以使用标记中的参数及其值。获得所需的节点后,可以通过将其视为散列来访问它的参数,或者,如果您希望节点包装的文本使用text
。
注意,我正在使用CSS选择器。 Nokogiri支持CSS和XPath选择器。 CSS更具可读性,足以满足大多数查找的需要。 XPath更强大,通常更复杂,视觉上更嘈杂。