加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:27:02 所属栏目:百科 来源:网络整理
导读:我想提取XML文件的一部分,并记下我提取了该文件中的某些部分,如“这里提取的东西”. 我试图用Nokogiri这样做,但似乎没有真正记录如何: 删除 Nokogiri :: XML :: Element的所有子代 更改该完整元素的inner_text 任何线索? 解决方法 Nokogiri使这个很简单.使
我想提取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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读