假设您定义以下内容:
class Person(name: String, age: Int) {
def toXml =
<person>
<name>{ name }</name>
<age>{ age }</age>
</person>
}
val Persons = List(new Person("John", 34), new Person("Bob", 45))
Run Code Online (Sandbox Code Playgroud)
然后生成一些XML并将其保存到文件中:
val personsXml =
<persons>
{ persons.map(_.toXml) }
</persons>
scala.xml.XML.save("persons.xml", personsXml)
Run Code Online (Sandbox Code Playgroud)
你最终得到了以下有趣的文字:
<persons>
<person>
<name>John</name>
<age>32</age>
</person><person>
<name>Bob</name>
<age>43</age>
</person>
</persons>
Run Code Online (Sandbox Code Playgroud)
当然,现在,这是完全有效的XML,但是如果你想在一个体面的文本编辑器中进行人工编辑,那么最好将它格式化得更好一些.
通过更改Scala XML文字的各个点上的缩进 - 使代码看起来不那么好 - 可以生成上述输出的变体,但似乎不可能完全正确.我理解为什么它会以这种方式格式化,但想知道是否有任何方法可以解决它.
Mor*_*itz 21
您可以使用scala.xml.PrettyPrinter对其进行格式化.遗憾的是,这不适用于大型文档,因为它只能格式化为a StringBuilder
并且不会直接写入流或编写器.
ger*_*rra 14
我找不到使用PrettyPrinter的方法,也直接指定文件编码.我发现的"解决方案"是这样的:
val Encoding = "UTF-8"
def save(node: Node, fileName: String) = {
val pp = new PrettyPrinter(80, 2)
val fos = new FileOutputStream(fileName)
val writer = Channels.newWriter(fos.getChannel(), Encoding)
try {
writer.write("<?xml version='1.0' encoding='" + Encoding + "'?>\n")
writer.write(pp.format(node))
} finally {
writer.close()
}
fileName
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8381 次 |
最近记录: |