示例:
<fruit name="mango"/>
我希望输出为:
name="mango"
答案 0 :(得分:3)
您可以使用attributes
方法将某些Node
的属性提取为哈希值。
返回包含节点属性的哈希。关键是属性名称,值是表示属性的Nokogiri :: XML :: Attr。
我会告诉你一个例子。这是一个XML文档:
<?xml version="1.0" encoding="utf-8" ?>
<files>
<file exists="true">
<content />
</file>
<file exists="false">
<content />
</file>
</files>
用Ruby代码处理它:
require "nokogiri"
doc = Nokogiri::XML(File.read "my.xml")
doc.css("files file[exists]").first.attributes
# => #<Nokogiri::XML::Attr:0x1184470 name="exists" value="true">
doc.css("files file[exists]").first.attributes["exists"].value
# => "true"
答案 1 :(得分:2)
xml = %(<fruit name="mango"/>)
fruit = Nokogiri.XML(xml) % "fruit"
fruit.attributes.values.map(&:to_xml).join.strip
答案 2 :(得分:0)
def getattributestest(doc,attr,rexg)
arr = doc.css(rexg)
cnode = arr.select {|node| node}
cnode.inject([]) do |rs,i|
rs << i.attributes[attr]
end
答案 3 :(得分:0)
从xml输入输出“name =”mango“的一些代码”&lt; frunit name =“mango”/&gt;“
require 'nokogiri'
doc = Nokogiri::XML %q|<xml><fruit name="mango"/></xml>|
element = doc.xpath("//fruit")
hash = Hash[doc.xpath("//fruit")[0].attributes.map{ |n, v| [ n, v.value ]}]
hash.each do |k, v|
puts %Q|#{k}="#{v}"|
end