在 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。