你能用antixml来创建xml文件吗?

sch*_*mmd 8 xml scala anti-xml

有一些使用Anti-Xml从XML文档中提取信息的示例,但我没有找到使用Anti-Xml来创建XML文档的示例.Anti-Xml是否支持创建文档,或者我应该使用另一个库(哪一个?).有没有人有一个用Anti-Xml创建XML文档的例子?

Tra*_*own 5

是的,您可以构建(和序列化)XML文档:

import com.codecommit.antixml._

val doc = Elem(None, "doc", Attributes(), Map(), Group(
  Elem(None, "foo", Attributes("id" -> "bar"), Map(), Group(Text("baz")))
))

val writer = new java.io.StringWriter
val serializer = new XMLSerializer("UTF-8", true)

serializer.serializeDocument(doc, writer)
Run Code Online (Sandbox Code Playgroud)

您还可以使用Anti-XML的拉链来做一些有趣的编辑技巧:

val foos = doc \ "foo"
val newFoo = foo.head.copy(children = Group(Text("new text!")))
val newDoc = foos.updated(0, newFoo).unselect
Run Code Online (Sandbox Code Playgroud)

现在newDoc包含已编辑的文档:

scala> newDoc.toString
res1: String = <doc><foo id="bar">new text!</foo></doc>
Run Code Online (Sandbox Code Playgroud)

Zipperdoc \ "foo"返回的是从不同的NodeSeq,它携带了它的上下文,它允许您"撤消"所做的选择操作信息\.


更新以回应ziggystar的评论如下:如果你想要像Scala的XML文字,你可以使用convert任何scala.xml.Elem:

val test: com.codecommit.antixml.Elem = <test></test>.convert
Run Code Online (Sandbox Code Playgroud)

我假设这个问题是关于程序化创作的.