我想提取XML文件的一部分,并记下我在该文件中提取了一些部分,比如"这里提取的东西".
我正试图用Nokogiri这样做,但似乎没有真正记录如何:
<Nokogiri::XML::Element>inner_text那个完整的元素有线索吗?
Pes*_*sto 16
Nokogiri让这很容易.使用此文件作为一个例子,下面的代码会发现所有vitamins的标签,消除他们的孩子(和孩子的孩子,等等),并改变自己内心的文字说:"孩子中删除.":
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
Run Code Online (Sandbox Code Playgroud)
给定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>
<a>0</a>
<c>0</c>
</vitamins>
<minerals>
<ca>0</ca>
<fe>0</fe>
</minerals>
</food>
Run Code Online (Sandbox Code Playgroud)
对此:
<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>
Run Code Online (Sandbox Code Playgroud)
小智 3
你可以这样做:
doc=Nokogiri::XML(your_document)
note=doc.search("note") # find all tags with the node_name "note"
note.remove
Run Code Online (Sandbox Code Playgroud)
虽然这会删除<note>标签内的所有子元素,但我不确定如何“更改所有注释元素的inner_text”。我认为inner_text不适用于 Nokogiri::XML::Element。
| 归档时间: |
|
| 查看次数: |
21798 次 |
| 最近记录: |