0

在 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类型的对象...... this 有什么用处?

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

谢谢。

4

1 回答 1

0

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

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

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

PS我想要这样做而不只是使用 XMLDecoder.readObject() 的原因是因为我需要在解码期间拦截并可能操纵 XML。

于 2014-08-05T11:56:37.343 回答