使用saxon作为库编写XML



我可以使用Java DOM:编写这个XML

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cac:Employee id="1">
<cbc:name>Pankaj</cbc:name>
<cbc:age>29</cbc:age>
<cbc:role>Java Developer</cbc:role>
<cbc:gender>Male</cbc:gender>
</cac:Employee>
<cac:Employee id="2">
<cbc:name>Lisa</cbc:name>
<cbc:age>35</cbc:age>
<cbc:role>Manager</cbc:role>
<cbc:gender>Female</cbc:gender>
</cac:Employee>
</Invoice>

但是,我想知道我是否可以使用Saxon库来编写这个XML。Saxon库是一个功能强大的库,可以执行XPath评估、快速读取、XSLT转换等操作,但我没有找到任何关于如何使用该库进行编写和XML的示例。有可能吗?如果可能的话,你能给我一些建议吗?

实际上有一系列机制,有些已经建立得很好,有些则相对较新。

您可以使用Processor.newSerializer()构造Serializer,然后获得SAXContentHandler(带Serializer.getContentHandler(或StAXXmlStreamWriter(带Serializer.getXMLStreamWriter(,使您能够一次向序列化程序写入一个事件。这些机制的优点是API是标准的,但我觉得它们中的任何一个都不太用户友好。

最近我介绍了Push API;流利的API";请注意,当您启动一个元素节点时,它会返回一个句柄,您可以使用该句柄来编写元素的子节点和属性。

Sapling树也是一种新的、有点实验性的树。这在内存中构建了一个轻量级的不可变树,完成后可以将其写入序列化程序。

对于这两个较新的API,主要文档是Javadoc。

最新更新