2

既存の XML ドキュメントにいくつかの要素を追加しようとしています。次のコードは、必要なノードとコンテンツの追加に成功していますが、挿入された要素をフォーマットしていません。追加されたすべての要素は、各要素の後に改行やインデントがあるのではなく、1 行で終わります。

このフォーマットを追加する方法について何か提案はありますか?

コードは次のとおりです。

doc.xpath("//tei:div[@xml:id='versionlog']", {"tei" => "http://www.tei-c.org/ns/1.0"}).each do |node|
  new_entry = Nokogiri::XML::Node.new "div", doc
  new_entry["xml:id"] = "v_#{ed_no}"
  head = Nokogiri::XML::Node.new "head", doc
  head.content = "Description of changes for #{ed_no}"
  new_entry.add_child(head)
  para = Nokogiri::XML::Node.new "p", doc
  para.content = "#{version_description}"
  new_entry.add_child(para)
  node.add_child(new_entry)
end
4

1 に答える 1

1

XML が 1 行に収まらないことが重要なのはなぜですか? これは、「きれいに印刷された」XML を持つ純粋に表面的なものであり、XML 仕様または XML がリロードされたときのパーサーでは必要ありません。個人的には、転送速度とディスク サイズの削減のためにフォーマットを使用しないことをお勧めしますが、YMMV.

XML beautifier を介して XML を実行するか、以下の行に沿って Nokogiri でゲームをプレイできます。

new_entry.add_child(para.to_xml + "\n")

改行はタグ間のテキスト ノードとして追加されますが、ペイロードを配信する XML の機能にとって無害であり、重要ではありません。

あなたが主張するなら、「どのようにして Nokogiri で HTML をきれいに印刷するのですか?」 に、そこに到達する方法が説明されています。

于 2012-12-06T18:52:28.133 に答える