【问题标题】:Is it possible to specify the behavior of EOL when using XMLOutputFactory? [duplicate]使用 XMLOutputFactory 时是否可以指定 EOL 的行为? [复制]
【发布时间】:2020-04-07 03:42:15
【问题描述】:

我喜欢将xml Elem写入文件,但我想在elem的每个节点之间设置行分隔符,所以在windows或ubuntu下打开文件时我有正确的格式。例如:

val lineSep = System.getProperty("line.separator") 
val xmlData : Elem = <person>
       <firstName>John</firstName>
       <lastName>Doe</lastName>
  <emails>
  <email type=”primary”>john.doe@noone.com</email>
  <email type=”secondary”>john.doe@noone.com</email>
  </emails>
  <address>
  <street>595 Market Street</street>
  <city>San Francisco</city>
  <zip>94105</zip>
  </address>
  </person>

val xmlStreamWriter = XMLOutputFactory.newInstance.createXMLStreamWriter(outputstream)
xmlStreamWriter.writeDTD(xmlData)

考虑到 lineSeparator,如何将其写入文件? XMLOutputFactory 有方法 setProperty() 是否可以在这里指定行分隔符?

【问题讨论】:

标签: java scala xmlstreamwriter


【解决方案1】:

来自The standard Scala XML library - Getting started指南:

将 XML 写入文件:

scala.xml.XML.save("books.xml", books)

要格式化 XML,请使用 scala.xml.PrettyPrinter 配置行长和缩进级别:

val pp = new scala.xml.PrettyPrinter(24, 4)
pp.format(books)

【讨论】:

  • 我不想使用 XLM.save 方法,因为我想流式传输 XML 内容,而 PrettyPrinter 将格式化所有 xml 内容,我不想格式化XML 节点内的文本。例如:&lt;text&gt; {hello "\n" world} &lt;\text&gt; 与 PrettyPrinter 将像这样输出&lt;text&gt; hello world &lt;\text&gt; "\n" 将被删除
  • 此外,PrettyPrinter 在内部使用“\n”作为 XML 标签的 EOL。
猜你喜欢
  • 2021-01-17
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2012-12-08
  • 2016-01-13
  • 1970-01-01
相关资源
最近更新 更多