有几个使用Anti-Xml从XML文档中提取信息的示例,但是我找不到使用Anti-Xml创建XML文档的示例。 Anti-Xml是否支持创建文档,或者我应该为此使用另一个库(哪一个?)。有没有人有使用Anti-Xml创建XML文档的例子?您可以使用antixml来创建xml文档吗?
回答
是的,你可以建立(和序列化)的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)
您还可以使用反XML的做一些有趣的编辑技巧:
val foos = doc \ "foo"
val newFoo = foo.head.copy(children = Group(Text("new text!")))
val newDoc = foos.updated(0, newFoo).unselect
现在newDoc
包含编辑文件:
scala> newDoc.toString
res1: String = <doc><foo id="bar">new text!</foo></doc>
该Zipper
doc \ "foo"
返回与NodeSeq
不同,因为它携带有关其上下文的信息,这允许您“撤消”\
完成的选择操作。
更新响应下面ziggystar的评论是:如果你想要像Scala的XML文本,你可以在任何scala.xml.Elem
使用convert
:
val test: com.codecommit.antixml.Elem = <test></test>.convert
我会承担的问题是关于程序化创作。
嗯,我认为这个问题应该被解读为“有没有一种方法可以用方便的方式使用Anti-Xml来构建文档*?”。像是有什么DSL创建文件?当然你可以手动粘贴实现类... – ziggystar
@ziggystar:看我的更新 - 你可以使用Scala的文字和转换。 –
除非您使用其他部分的反xml,否则我会坚持使用Scala的文字。但是,如果你正在寻找一个更好的选择,有一个漂亮的构建器DSL,就地更新,XPath使用(基于DSL和String)等,那么我建议看看Scales。从0.3-RC5发布网站(http://scala-scales.googlecode.com/svn/sites/scales/scales-xml_2.9.1/0.3-RC5/index.html):
val ns = Namespace("test:uri")
val nsa = Namespace("test:uri:attribs")
val nsp = nsa.prefixed("pre")
val builder =
ns("Elem") /@ (nsa("pre", "attr1") -> "val1",
"attr2" -> "val2",
nsp("attr3") -> "val3") /(
ns("Child"),
"Mixed Content",
ns("Child2") /(ns("Subchild") ~> "text")
)
也为直接序列化你可以利用流媒体,因为Scales Xml模型统一了基于流和树的处理模型。
我在0.3-RC6之前有很多文档(和非常酷的xml比较框架),但我在等待首先迁移到sonatype。 (下周eta)
- 1. 您可以使用Ant来构建/修改XML文件吗?
- 2. 您可以使用node.js中的XML/HTML文档吗?
- 3. 使用继承来创建Xml文档
- 4. 您可以帮助您使用LZMA(7zip)SDK创建zip存档吗?
- 5. 您可以使用ASP.NET Web控件(ASCX)来呈现XML吗?
- 6. 我可以使用EPUB格式的LaTeX文档创建吗?
- 7. T-SQL CLR:您可以使用可选参数创建AGGREGATE吗?
- 8. XML文档可以同时使用DTD和XML模式吗?
- 9. 您可以使用CouchDB 2.0'Mango'实现文档连接吗?
- 10. 您可以使用Google Drive API更改文档的说明吗?
- 11. 可以使用PHP simpleXML创建XML文件吗?
- 12. 可以打开xml sdk用于创建xml文件吗?
- 13. 用PHP创建XML文档
- 14. XML/XSL nub:是否可以创建一个COMPOSITE XML/XSLT文档?
- 15. 您可以创建使用C#
- 16. 您可以使用scons来构建PHP扩展吗?
- 17. 使用nodeList创建XML文档
- 18. 使用Rails创建XML文档
- 19. 使用VBA创建Word或XML文档
- 20. 使用ocaml创建xml文档
- 21. 使用XML和C创建Word文档#
- 22. PHP:使用.xml创建.docx文档
- 23. 使用钛创建XML文档
- 24. 使用GDataXML创建XML文档
- 25. 使用BeautifulSoup创建XML文档
- 26. 如何使用XmlDocument创建XML文档?
- 27. 您可以使用JOGL创建3D组件吗?
- 28. 您可以使用MS Test Suite创建'Dynamic'测试吗?
- 29. Grails:您可以使用Command对象创建/保存吗?
- 30. 您可以使用.Net创建一个基于web的UI吗?
实际上,前段时间我问自己同样的问题,因为我对Scala XML文字缺乏名称空间支持感到不满意。所以我寻找了替代库来构建我的XML。对于我的使用案例来说,答案似乎是消极的,由特拉维斯的答案来判断。 – ziggystar