ruby – Nokogiri:列出属性名称和值?
发布时间:2020-12-16 21:02:45 所属栏目:百科 来源:网络整理
导读:我想解析我的 XML文件. 我需要计算属性并拥有它们的名称和价值…… require 'nokogiri'f = File.open("file.xml")doc = Nokogiri::XML(f)f.closep doc.xpath("/a/@*").count 我想拥有属性列表. 我试过了 : doc.attributes.each do |name,attr| p name = att
我想解析我的
XML文件.
我需要计算属性并拥有它们的名称和价值…… require 'nokogiri' f = File.open("file.xml") doc = Nokogiri::XML(f) f.close p doc.xpath("/a/@*").count 我想拥有属性列表. 我试过了 : doc.attributes.each do |name,attr| p name => attr.value end 但是错误: in `<main>': undefined method `attributes' for #<Nokogiri::XML::Document:0x3490680> (NoMethodError) 我不知道为什么…… <a ata="1" atb="2" atc="3">Blabla</a> 或者我希望能够得到这个名字. puts doc.xpath("/a/@*").attributes[1].name puts doc.xpath("/a/@*").attributes[1].value 拥有第一个属性的名称和值.但是,当然,这些线路不起作用! 谢谢. 解决方法
在这里,我试着告诉你,为什么你得到错误以及如何解决你的问题.
require 'nokogiri' doc = Nokogiri::HTML <<-html <a ata="1" atb="2" atc="3">Blabla</a> html doc.class # => Nokogiri::HTML::Document doc.respond_to?(:attributes) # => false doc.at_css('a').class # => Nokogiri::XML::Element doc.at_css('a').respond_to?(:attributes) # => true Hash[doc.at_css('a').to_a] # => {"ata"=>"1","atb"=>"2","atc"=>"3"} 现在错误的原因未定义的方法’属性’是 – 你的doc给出一个 现在,有多种方法可以做到这一点. #at_css将为我们提供Nokogiri :: XML :: Node,其中css将为您提供 因此,虽然您想收集属性的所有元素.然后你可能会这样做 doc.css('a').each do |node| node.each do |attr_name,attr_val| # work with attr_name,attr_val end end 示例: – doc.at_css('a').each { |att_name,att_value| p [att_name,att_value] } # >> ["ata","1"] # >> ["atb","2"] # >> ["atc","3"] 您还可以使用#attributes方法.这里只是一个例子,向您展示它是如何工作的 – node_attributes = doc.at('a').attributes # => {"ata"=>#(Attr:0x4260fc6 { name = "ata",value = "1" }),# "atb"=>#(Attr:0x4260fbc { name = "atb",value = "2" }),# "atc"=>#(Attr:0x4260fb2 { name = "atc",value = "3" })} node_attributes.do |atr_name,node_attr| node_attributes[atr_name] = node_attr.content end node_attributes # => {"ata"=>"1","atc"=>"3"} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |