在 Java 6 中,整个 xerces XML 解析器/序列化器实现现在位于 Java 运行时 (rt.jar) 中。这些包已移至 com.sun.* 命名空间下,这使得它们无法在客户端代码中进行显式引用。使用解析器时这不是问题,解析器是通过 javax API 定义的工厂实例化的。
但是,我们的代码还使用 xerces 序列化 (org.apache.xml.serialize.* )。 AFAICT,没有 javax.xml API 定义的工厂用于创建 Serializer 和 OutputFormat 的实例。这似乎意味着获得一个的唯一方法是显式调用 com.sun.org.apache.xml.serialize.* API。
我在 javax.xml.stream 中找到了序列化类,但它们似乎没有提供任何输出格式控制,如 xerces OutputFormat 类。
问题:
有没有办法访问 xerces 序列化功能(is在 rt.jar 中)通过 javax 标准 API,不包含 xerces.jar 并且也不显式实例化 com.sun.* 类?
如果没有,是否有符合javax API的方法来达到相同的效果?
如果您想使用未通过官方公开的 Xerces 功能java.*
or javax.*
API,那么您唯一真正的解决方案就是包含 Xerces 作为第三方库。以任何方式访问 Xerces 的 JRE 内部版本都是一件危险的事情,因为没有任何东西可以保证有效的 JRE 甚至具有这些类(备用 JRE 甚至同一 JRE 的其他版本可能使用不同的实现来实现 JAXP API,甚至只需将其移动到另一个包中即可)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)