我想提取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>