Я хочу перепечатать измененный xml после удаления всего дочернего узла

#ruby #xml #rexml

#ruby #xml #rexml

Вопрос:

 <product>
<book>
    <id>111</id>
    <name>xxx</name>
</book>
<pen>
    <id>222</id>
    <name>yyy</name>
</pen>
<pencil>
    <id>333</id>
    <name>zzz</name>
</pencil>
 

Я хочу удалить узел «карандаш» и распечатать оставшийся xml с помощью REXML (Ruby). Кто-нибудь может сказать мне, как это сделать?

Ответ №1:

Используя один из методов удаления http://rubydoc.info/stdlib/rexml /

 require "rexml/document"
string = <<EOF
  <product>
  <book>
      <id>111</id>
      <name>xxx</name>
  </book>
  <pen>
      <id>222</id>
      <name>yyy</name>
  </pen>
  <pencil>
      <id>333</id>
      <name>zzz</name>
  </pencil>
  </product>
EOF
doc = REXML::Document.new(string)
doc.delete_element('//pencil')
puts doc
 

Существует также хороший учебник, который поможет вам начать: http://www.germane-software.com/software/rexml/docs/tutorial.html

Комментарии:

1. .to_s в конце не требуется; по умолчанию вызывает .to_s для объекта.