如何使用Nokogiri从XML中删除元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Nokogiri从XML中删除元素相关的知识,希望对你有一定的参考价值。

给出此html

 <products>
    <product>
      <name> product1 </name>
      <price> 21 </price>
    </product>
    <product>
      <name> product2 </name>
      <price> 0 </price>
    </product>
        <product>
      <name> product3 </name>
      <price> 10 </price>
    </product>
  </products>

我想使用Nokogiri重新创建XML文件,但是我想删除“产品价格= 0”的元素,因此它看起来像:

 <products>
    <product>
      <name> product1 </name>
      <price> 21 </price>
    </product>
    <product>
      <name> product3 </name>
      <price> 10 </price>
    </product>
  </products>

我尝试了很多事情,但似乎无济于事。

答案
Nokogiri使用XPath,通过它我可以查询XML文件:

就这么简单:

require 'nokogiri' doc = File.open("file_with_your.xml") |f| Nokogiri::XML(f) // load your file with xml content c = doc.xpath("//product[price!=0]") //this is the query puts c // you can print the results File.open("myfile.xml", "w+") do |f| // and create another file f << c end

以上是关于如何使用Nokogiri从XML中删除元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nokogiri 在 TMX 中搜索道具元素

如何使用 Nokogiri 访问属性

如何使用 Nokogiri 删除节点?

如何使用 XSLT 从 XML 中删除元素标记

如何使用Nokogiri解析带有非对标签的XML

如何使用 C#4.0 从 xml 内容中删除特定的 xml 元素?