使用 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 会按此顺序在以下位置查找要使用的服务提供者:
  1. 具有与服务提供者相同名称的系统属性。
  2. 属性文件中指定的服务提供者。
    • 仅用于 XMLEventFactoryXMLInputFactoryXMLOutputFactory 以下文件中服务提供者的值:
      • 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
  3. META-INF/services/<service.provider> 文件的内容。
  4. 缺省服务提供者。
以下服务提供者控制 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 实现。