xerces serialization in Java 6

断了今生、忘了曾经 提交于 2019-12-05 08:12:47

If you want to use a Xerces feature that's not exposed through an official java.* or javax.* API, then your only real solution is to include Xerces as a third-party library. Accessing the JRE-internal version of Xerces in any way would be a dangerous thing, since nothing guarantees that a valid JRE even has those classes (alternate JREs and even other versions of the same JRE might implement the JAXP APIs using a different implementation or even just move it to another package).

As far as I know there is no official API to do this. The Java XML APIs strangely are only for parsing XML.

You could, however, use the XML Transformation API to write a DOM Document to a file. See this example.

If you don't want to reference sun API's, you can place Xerces in the endorsed directory. It will replace the sun copy/implementation, but then you can use the API without worries (this is the "official" way to do it).

The Java built-in implementation does not provide good control over the output, although it is possible to gain some better control over the output using Xerces and the API properties, since the API supports passing additional properties that other implementations may find useful. Haven't tried that last one myself (I'm only going by the documentation).

Edit (in response to comment): If you want to use Xerces in an enviornment where you do not control the underlying JDK to the point where you can specify your own replacement APIs for JAXP, then you will have to reference Xerces directly (or reference the sun package rewrite).

If you can put Xerces in the endorsed directory (or otherwise override the endorsed setting - which seems unlikely in an app server frankly, although I don't know Weblogic specifically) the "JDK" way of setting the properties to an underlying implementation is via TransformerFactory.setAttribute, which depending on the implementation may interact with Transformer.setParameter.

I should add that should the underlying version that sun bundles be enough, and if Weblogic uses it (or uses its own Xerces if that is enough) then you may be in luck here, and just be able to pass the properties and have it work.

javax.xml.bind.JAXBContext? If you are trying to bind/serialize objects to XML, JAXB is the standard to go with. If you are doing raw parsing, org.xml.sax and/or org.w3c.dom should have what you're lookinf for.

UPDATED: The com.javax.transform packages should help. Take a look at the Transformer example here.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!