2

我正在尝试将一些元素添加到已经存在的 XML 文档中。以下代码成功地添加了所需的节点和内容,但它不会格式化插入的元素。所有添加的元素都在一行中结束,而不是在每个元素之后都有换行符和缩进。

关于如何添加此格式的任何建议?

代码是:

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 不在一行很重要?具有“漂亮打印”的 XML 纯粹是装饰性的,并且在重新加载 XML 时 XML 规范或解析器不需要。就个人而言,我建议您不要格式化您的传输速度和减少磁盘大小,但 YMMV。

您可以通过 XML 美化器运行 XML,或者与 Nokogiri 一起玩游戏:

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

换行符将作为标签之间的文本节点添加,但它是良性的,对于 XML 传递其有效负载的能力并不重要。

如果您坚持,“我如何使用 Nokogiri 漂亮地打印 HTML? ”描述了如何到达那里。

于 2012-12-06T18:52:28.133 回答