微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 saxon 作为库编写 XML

如何解决使用 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 的示例。 是否有可能?如果可以,你能给我一些建议吗?

解决方法

实际上有一系列机制,有些已经很成熟,有些则相对较新。

您可以使用 Serializer 构造一个 Processor.newSerializer(),然后得到一个 SAX ContentHandler(带有 Serializer.getContentHandler)或一个 StAX XmlStreamWriter(带有 {{ 1}}) 使您能够一次向序列化程序写入一个事件。这些机制的优点是 API 是标准的,但我认为它们中的任何一个都不是非常用户友好。

最近我介绍了 Push API,它有更多“流畅的 API”的感觉,因为当你启动一个元素节点时,它会返回一个句柄,你可以用它来编写元素的子元素和属性.

也是新的,有点实验性的,是树苗树。这在内存中构造了一个轻量级的不可变树,然后可以在完成后将其写出到序列化程序。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。