使用 saxon 作为库编写 XML
Write XML using saxon as a library
我可以使用 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
,然后得到一个 SAX ContentHandler
(使用 Serializer.getContentHandler
)或一个 StAX XmlStreamWriter
(使用Serializer.getXMLStreamWriter
) 使您能够一次向序列化程序写入一个事件。这些机制的优点是 API 是标准的,但我发现它们中的任何一个都不是非常用户友好。
最近我介绍了 Push API,它给人一种“流畅 API”的感觉,因为当您启动一个元素节点时,它 returns可用于编写元素的子元素和属性的句柄。
树苗也是新的,有点实验性。这会在内存中构建一个轻量级的不可变树,完成后可以将其写入序列化程序。
对于这两个较新的 API,主要文档是 Javadoc。
我可以使用 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
,然后得到一个 SAX ContentHandler
(使用 Serializer.getContentHandler
)或一个 StAX XmlStreamWriter
(使用Serializer.getXMLStreamWriter
) 使您能够一次向序列化程序写入一个事件。这些机制的优点是 API 是标准的,但我发现它们中的任何一个都不是非常用户友好。
最近我介绍了 Push API,它给人一种“流畅 API”的感觉,因为当您启动一个元素节点时,它 returns可用于编写元素的子元素和属性的句柄。
树苗也是新的,有点实验性。这会在内存中构建一个轻量级的不可变树,完成后可以将其写入序列化程序。
对于这两个较新的 API,主要文档是 Javadoc。