从Ruby中的XML中删除节点?

时间:2013-10-18 00:52:13

标签: ruby xml

我的XML看起来像这样:

<?xml version="1.0"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Example!</body>
</note>
</inspect>

我使用了Builder,由于某种原因,它最后添加了<inspect>节点。我该如何删除?

1 个答案:

答案 0 :(得分:2)

使用Nokogiri

xml = <<-EOF
<?xml version="1.0"?>
<inspect>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Example!</body>
</note>
</inspect>
EOF

require 'nokogiri'
tree = Nokogiri.XML(xml)
tree.at_xpath('inspect').replace(tree.at_xpath('inspect/note'))
puts tree.to_s

输出:

<?xml version="1.0"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Example!</body>
</note>

注意:原始XML不包含<inspect>。我添加了<inspect>