Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Nokogiri和Ruby解析XML文件_Ruby_Xml_Nokogiri - Fatal编程技术网

如何使用Nokogiri和Ruby解析XML文件

如何使用Nokogiri和Ruby解析XML文件,ruby,xml,nokogiri,Ruby,Xml,Nokogiri,我有一个XML文件: <root> <person name="brother">Abhijeet</person> <person name="sister">pratiksha</person> </root> 以及: 这是使用CSS搜索具有给定参数和值的节点的基本方法: require 'nokogiri' doc = Nokogiri::XML(<<EOT) <root>

我有一个XML文件:

<root>
    <person name="brother">Abhijeet</person>
    <person name="sister">pratiksha</person>
</root>
以及:


这是使用CSS搜索具有给定参数和值的节点的基本方法:

require 'nokogiri'

doc = Nokogiri::XML(<<EOT)
<root>
  <person name="brother">Abhijeet</person>
  <person name="sister">pratiksha</person>
</root>
EOT

doc.at('person[name="sister"]').to_html # => "<person name=\"sister\">pratiksha</person>"
它将在其中找到所有
节点。它不会搜索节点的参数

不要做:

doc.elements.each do |f|
    f.each do |y|
         p y
    end
end

在遍历每个元素时会浪费大量CPU。相反,请学习选择器的工作原理,这样您就可以利用libXML的强大功能。

请发布您的代码。请阅读“”。你读过Nokogiri教程吗?他们讨论如何搜索和提取信息。您是否在internet上搜索过如何根据值查找节点的参数?您的选择器不正确,因此搜索将解释如何操作。这也很重要。
require 'nokogiri'

doc = Nokogiri::XML(<<EOT)
<root>
  <person name="brother">Abhijeet</person>
  <person name="sister">pratiksha</person>
</root>
EOT

doc.at('person[name="sister"]').to_html # => "<person name=\"sister\">pratiksha</person>"
<root>
  <person>
    <sister />
  </person>
  <person>
    <sister />
  </person>
</root>
doc.elements.each do |f|
    f.each do |y|
         p y
    end
end