使用 XMLDecoder.createHandler() 返回的处理程序来解析嵌入的 xml 持久化的 Java 对象



在 XMLDecoder.createHandler() 的文档中:

"
     * Creates a new handler for SAX parser
     * that can be used to parse embedded XML archives
     * created by the {@code XMLEncoder} class.
..."

但是createHandler()返回DefaultHandler类型的对象...这有什么用?

我需要使用 javax.xml.parsers.SAXParser 解析嵌入在异构 xml 文件中的对象,并且我试图避免导入com.sun.beans.decoder.DocumentHandler .

谢谢。

我也有这个问题,并且对您可能遇到的任何答案都非常感兴趣。 与此同时,我想出的最好的是:

DefaultHander handler = XMLDecoder.createHandler( ... );
SAXParserFactory.newInstance().newSAXParser().parse(in, handler);
Object[] data = (Object[])decoderHandler.getClass().getMethod("getObjects").invoke(decoderHandler);

显然,这并不理想,但它在 API 允许的约束范围内完成了工作。

PS 我想要这样做而不仅仅是使用 XMLDecoder.readObject() 的原因是因为我需要在解码过程中拦截并可能操作 XML。

最新更新