使用 XML
IBM® SDK 包含 XML4J 和 XL XP-J 解析器, XL TXE-J 1.0 XSLT 编译器以及 XSLT4J XSLT 解释器。 这些工具使您能够独立于任何给定的 XML 处理实现,来对 XML 文档进行语法分析、验证、转换和串行化。
使用工厂查找程序来查找抽象工厂类的实现,如 选择 XML 处理器中所述。 通过使用工厂查找程序,您可以在不更改 Java™ 代码的情况下选择其他 XML 库。
可用 XML 库
IBM SDK 包含以下 XML 库:
- XML4J 4.5
- XML4J 是验证解析器,提供对以下标准的支持:
- XML 1.0(第 4 版)
- 使用 XML 1.0 的名称空间(第 2 版)
- XML 1.1(第 2 版)
- 使用 XML 1.1 的名称空间(第 2 版)
- W3C XML 模式 1.0(第 2 版)
- XInclude 1.0(第 2 版)
- OASIS XML Catalogs 1.0
- SAX 2.0.2
- DOM 级别 3 核心、装入和保存
- DOM 级别 2 核心、事件、遍历和范围
- JAXP 1.6
XML4J 4.5 基于 Apache Xerces-J 2.9.0。 请参阅 http://xerces.apache.org/xerces2-j/ 以获取更多信息。
- XL XP-J 1.1
XL XP-J 1.1 是高性能非验证解析器,它提供对 StAX 1.0 (JSR 173) 的支持。 StAX 是对 XML 1.0 和 XML 1.1 文档进行拉式解析和流式串行化的双向 API。 请参阅 XL XP-J 参考信息 部分,以获取有关 XL XP-J 1.1支持的内容的更多详细信息。
- XL TXE-J 1.0
对于 V 6 和更高版本, IBM SDK for Java 包含 XL TXE-J。 XL TXE-J 包含 XSLT4J 2.7.8 解释器和新的 XSLT 编译器。 缺省使用新的编译器。 XSLT4J 编译器不再包含在 IBM SDK for Java 中。 请参阅 迁移到 XL-TXE-J ,以获取有关迁移到 XL TXE-J 的信息。
XL TXE-J 提供对以下标准的支持:- XSLT 1.0
- XPath 1.0
- JAXP 1.6
选择 XML 处理器
XML 处理器选择是通过使用服务提供者来执行的。 使用工厂查找程序时, Java 会按此顺序在以下位置查找要使用的服务提供者:
- 具有与服务提供者相同名称的系统属性。
- 属性文件中指定的服务提供者。
- 仅用于 XMLEventFactory、XMLInputFactory 和 XMLOutputFactory。 以下文件中服务提供者的值:
- AIX: /etc/java8[_64]/jre/lib/stax.properties
- Linux: /opt/ibm/java-<arch>-80/jre/lib/stax.properties
- Windows:C:\Program Files\IBM\Java80\jre\lib\stax.properties
- z/OS: /usr/lpp/java/J8.0[_64]/jre/lib/stax.properties
- 对于其他 factory。 以下文件中服务提供者的值:
- AIX: /etc/java8[_64]/jre/lib/jaxp.properties
- Linux: /opt/ibm/java-<arch>-80/jre/lib/jaxp.properties
- Windows:C:\Program Files\IBM\Java80\jre\lib\jaxp.properties
- z/OS: /usr/lpp/java/J8.0[_64]/jre/lib/jaxp.properties
- 仅用于 XMLEventFactory、XMLInputFactory 和 XMLOutputFactory。 以下文件中服务提供者的值:
- META-INF/services/<service.provider> 文件的内容。
- 缺省服务提供者。
以下服务提供者控制 Java 使用的 XML 处理库:
- javax.xml.parsers.SAXParserFactory
- 选择 SAX 解析器。 缺省情况下,使用 XML4J 库的 org.apache.xerces.jaxp.SAXParserFactoryImpl。
- javax.xml.parsers.DocumentBuilderFactory
- 选择文档构建器。 缺省情况下,使用 XML4J 库的 org.apache.xerces.jaxp.DocumentBuilderFactoryImpl。
- javax.xml.datatype.DatatypeFactory
- 选择数据类型 factory。 缺省情况下,使用 XML4J 库的 org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl。
- javax.xml.stream.XMLEventFactory
- 选择 StAX 事件 factory。 缺省情况下,使用 XL XP-J 库中的 com.ibm.xml.xlxp.api.stax.XMLEventFactoryImpl。
- javax.xml.stream.XMLInputFactory
- 选择 StAX 解析器。 缺省情况下,使用 XL XP-J 库中的 com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl。
- javax.xml.stream.XMLOutputFactory
- 选择 StAX 串行器。 缺省情况下,使用 XL XP-J 库中的 com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl。
- javax.xml.transform.TransformerFactory
- 选择 XSLT 处理器。 可能的值为:
- com.ibm.xtq.xslt.jaxp.compiler.TransformerFactoryImpl
- 使用 XL TXE-J 编译器。 此值是缺省值。
- org.apache.xalan.processor.TransformerFactoryImpl
- 使用 XSLT4J 解释器。
- javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema
- 选择 W3C XML 模式语言的模式 factory。 缺省情况下,使用 XML4J 库的 org.apache.xerces.jaxp.validation.XMLSchemaFactory。
- javax.xml.xpath.XPathFactory
- 选择 XPath 处理器。 缺省情况下,使用 XSLT4J 库的 org.apache.xpath.jaxp.XPathFactoryImpl。
注: 在 IBM SDK Java Technology Edition V 8 中不推荐使用 IBM XML 实现,在将来的发行版中将替换为 Oracle XML 实现。