比如 xml 文件中包括了全部的 cpu 和 gpu 型号
<computer>
<cpu>
<item>
<name>Intel Xeon E5-2679 v4 @ 2.50GHz</name>
<frequncy>2.50GHz</frequncy>
</item>
<item>
<name>Intel Core i7-3960X</name>
<frequncy>3.30GHz</frequncy>
</item>
<item>
<name>Intel Core i5-5575R</name>
<frequncy>2.80GHz</frequncy>
</item>
<item>
<name>AMD FX-8140</name>
<frequncy>2.80GHz</frequncy>
</item>
。。。
</cpu>
<gpu>
<item>
<name>GeForce GTX 1080</name>
<benmark>13151</benmark>
</item>
<item>
<name>GeForce GTX 980 Ti</name>
<benmark>11508</benmark>
</item>
<item>
<name>Quadro M6000 24GB</name>
<benmark>11249</benmark>
</item>
<item>
<name>Radeon Pro Duo</name>
<benmark>9164</benmark>
</item>
。。。
</gpu>
</computer>
文件中包括了全部的 cpu 和 gpu 型号,如果只把其中 cpu 是 amd 和 gpu 是 readeon 的内容摘取出来,保存成一个新的 xml 现在读取可以 rexml 实现
require 'rexml/document'
require 'rexml/streamlistener'
include REXML
class Listener
include StreamListener
def tag_start(name, attributes)
puts "Start #{name}"
print attributes
end
def tag_end(name)
puts "End #{name}"
end
end
listener = Listener.new
parser = Parsers::StreamParser.new(File.new("computer.xml"), listener)
parser.parse
如果要保存成新的 xml,但是总体结构不变,应该如何实现?