IBM Support

Migrating from the IBM XML implementation

News


Abstract

The IBM implementation of XML is deprecated in IBM® SDK, Java™ Technology Edition, version 8. Use the binaryAppScanner tool to identify usage of internal classes and features from the IBM XML implementation in your applications, which you can then modify to use alternative APIs.

Content

The binaryAppScanner tool is part of the WebSphere® Application Server Migration Toolkit for Application Binaries .



Run the binaryAppScanner tool as follows to identify usage of IBM XML code or features:
  • java -jar binaryAppScanner.jar binaryInputPath --analyze --targetJava=java11


For help, use the following command:
  • java -jar binaryAppScanner.jar --help --analyze


For each IBM XML API that is listed in the output from the binaryAppScanner tool, modify your application to use an alternative. The following table lists some alternative APIs.

 
Internal API or feature Alternative
com.ibm.xml.resolver.*
This API is a derivative of the Apache XML Commons resolver.
javax.xml.catalog.*
This API is new in Oracle Java SE 9. For more information, see JEP 268: XML Catalogs .
org.apache.xerces.dom.*
You might directly instantiate a class from the DOM implementation, or make a cast to one of those classes.
org.w3c.dom.* (DOM interfaces)
Use org.w3c.dom.Document or org.w3c.dom.DOMImplementation for creating new DOM nodes.
org.apache.xerces.impl.dv.util.*
You might use this API for processing xs:base64Binary and xs:hexBinary values.
javax.xml.bind.DatatypeConverter  (JAXB API)
For example, parseBase64Binary() , printBase64Binary() , parseHexBinary() , printHexBinary() .
org.apache.xerces.impl.dv.xs.*
You might use this API for parsing and validating XML Schema simple type values.
Map any XML Schema types to public interfaces or classes in Java code, according to the JAXB specification (see the table Java Mapping for XML Schema Built-in Types). For example, use java.lang.Integer for xs:int in contexts where you need an object, and use javax.xml.datatype.XMLGregorianCalendar for xs:dateTime. For more complex validation, consider constructing a dummy XML document that wraps the simple type value, then validate the document through the JAXP Schema API (javax.xml.schema).
org.apache.xerces.impl.xpath.regex.*
You might use this API for evaluating regular expressions. These classes support the form of regular expressions in XML Schema 1.0.
java.util.regex.*
Unless your expressions are using something that is specific to the XML Schema form.
org.apache.xerces.parsers.*
Specifically the DOMParser and SAXParser classes
javax.xml.parsers.* (JAXP API)
The entry points are SAXParserFactory and DocumentBuilderFactory . Remember to call the setNamespaceAware(true) method before creating new parser instances.
org.apache.xerces.util.URI
org.apache.xml.utils.URI
java.net.URI
org.apache.xerces.* APIs other than those that are listed previously in this table There is no equivalent API in the Java 9 specification. Consider including Apache Xerces in your product if you cannot rewrite the code to use the standard Java API.
org.apache.xml.serialize.*org.apache.xml.serializer.*
org.apache.xpath.* javax.xml.xpath (JAXP XPath API)
Use of Java object serialization for serializing DOMs instead of writing them to an XML document. These previously serialized objects will be unreadable in this release. Instead, write documents as XML by using either the JAXP Transform API ( javax.xml.transform ) or DOM L3 Load/Save ( org.w3c.dom.ls ). Your code will also be more portable (you cannot transfer serialized objects between IBM and Oracle runtime environments because these environments have different DOM implementation classes in different Java packages).
Object serialization of javax.xml.datatype.Duration and javax.xml.datatype.XMLGregorianCalendar abstract classes These previously serialized objects will be unreadable in this release. Use the toString() methods of these classes for serialization instead of writing them as objects.

[{"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"XML","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF012","label":"IBM i"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF035","label":"z\/OS"}],"Version":"8.0","Edition":"Java SE","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
20 March 2020

UID

swg22016031