1

私の既存の XML (test.xml) を考えると:

<root>
  <element>
    <child id="1" />
    <child id="2" />
    <child id="3" />
  </element>
</root>

そして私のルビーコード:

require 'rubygems'
require 'xml'

parser = XML::Parser.file("test.xml")
doc = parser.parse

target = doc.find('/*/element')
target << child = XML::Node.new('child')
child['id'] = '4'

XML.indent_tree_output = true
doc.save(filename, :indent => true, :encoding => XML::Encoding::UTF_8)

私の問題は、出力を次のようにフォーマットすることです。

<root>
  <element>
    <child id="1" />
    <child id="2" />
    <child id="3" />
  <child id="4" /></element>
</root>

...その後の追加は次のようになります。

<root>
  <element>
    <child id="1" />
    <child id="2" />
    <child id="3" />
  <child id="4" /><child id="5" /><child id="6" /></element>
</root>

私が欲しいのはこれです:

<root>
  <element>
    <child id="1" />
    <child id="2" />
    <child id="3" />
    <child id="4" />
    <child id="5" />
    <child id="6" />
  </element>
</root>

…でもどうやって手に入れるの?

4

2 に答える 2

2

交換
parser = XML::Parser.file("test.xml")


parser = XML::Parser.file("test.xml", :options => XML::Parser::Options::NOBLANKS )

それは助けです

于 2009-05-12T10:49:06.803 に答える
0

document.save を使用している場合は、indent が true に設定されていることを確認し、XML.indent_tree_output が設定されていることも確認してください。このようなもの:

XML.indent_tree_output = true
doc.save(filename, :indent => true, :encoding => XML::Encoding::UTF_8)

Rubyforge がうまく動かないので、ドキュメントで確認できませんが、インデントと改行を機能させるには、両方を true に設定する必要があると思います。

于 2009-04-02T19:01:23.367 に答える