ruby – 使用Nokogiri插入和删除XML节点和元素

前端之家收集整理的这篇文章主要介绍了ruby – 使用Nokogiri插入和删除XML节点和元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想提取XML文件的一部分,并记下我提取了该文件中的某些部分,如“这里提取的东西”.

我试图用Nokogiri这样做,但似乎没有真正记录如何:

删除< Nokogiri :: XML :: Element>的所有子代
>更改该完整元素的inner_text

任何线索?

解决方法

Nokogiri使这个很简单.使用 this document作为示例,以下代码将找到所有维生素标签,删除他们的孩子(和孩子的孩子等),并更改其内部文本,说“儿童被移除”.:
require 'nokogiri'

io = File.open('sample.xml','r')
doc = Nokogiri::XML(io)
io.close

doc.search('//vitamins').each do |node|
  node.children.remove
  node.content = 'Children removed.'
end

给定的食物节点将从这样看:

<food>
    <name>Avocado Dip</name>
    <mfr>Sunnydale</mfr>
    <serving units="g">29</serving>
    <calories total="110" fat="100"/>
    <total-fat>11</total-fat>
    <saturated-fat>3</saturated-fat>
    <cholesterol>5</cholesterol>
    <sodium>210</sodium>
    <carb>2</carb>
    <fiber>0</fiber>
    <protein>1</protein>
    <vitamins>
        <a>0</a>
        <c>0</c>
    </vitamins>
    <minerals>
        <ca>0</ca>
        <fe>0</fe>
    </minerals>
</food>

到这个:

<food>
    <name>Avocado Dip</name>
    <mfr>Sunnydale</mfr>
    <serving units="g">29</serving>
    <calories total="110" fat="100"/>
    <total-fat>11</total-fat>
    <saturated-fat>3</saturated-fat>
    <cholesterol>5</cholesterol>
    <sodium>210</sodium>
    <carb>2</carb>
    <fiber>0</fiber>
    <protein>1</protein>
    <vitamins>Children removed.</vitamins>
    <minerals>
        <ca>0</ca>
        <fe>0</fe>
    </minerals>
</food>

猜你在找的Ruby相关文章