【问题标题】:Adding formatted break with Nokogiri使用 Nokogiri 添加格式化的中断
【发布时间】:2015-08-07 14:13:48
【问题描述】:

我正在尝试将一些元素添加到已经存在的 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

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    为什么 XML 不在一行很重要?具有“漂亮打印”的 XML 纯粹是装饰性的,并且在重新加载 XML 时 XML 规范或解析器不需要。就个人而言,我建议您不要格式化以提高传输速度并减少磁盘大小,而是使用 YMMV。

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

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

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

    如果您坚持,“How do I pretty-print HTML with Nokogiri?”会描述如何到达那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多