开发者

org.apache.xerces.dom.DeferredDocumentImpl incompatible with org.dom4j.Document

Im reading some RSS from an URL and are experiencing some troubles. Initially I had a straightforward implementation like this:

SAXReader reader = new SAXReader();
Document doc = reader.read(new URL(sURL));

However, this didnt allow me to timeout the request if the response was very slow. So I changed it to :

public static org.dom4j.Document readXml(InputStream is) throws SAXException, IOException,
        ParserConfigurationException {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        dbf.setValidating(false);
        dbf.setIgnoringComments(false);
        dbf.setIgnoringElementContentWhitespace(true);
        dbf.setNamespaceAware(true);

        DocumentBuilder db = null;
        db = dbf.ne开发者_JAVA技巧wDocumentBuilder();

        return (org.dom4j.Document)db.parse(is);
    }

     SAXReader reader = new SAXReader();

    URL myUrl = new URL(sURL);
    URLConnection c = myUrl.openConnection();
    c.setConnectTimeout(10000);
    c.setReadTimeout(10000);
    org.dom4j.Document doc = readXml(c.getInputStream());
    Element root = doc.getRootElement();

When trying this, I get a annyoing error:

org.apache.xerces.dom.DeferredDocumentImpl incompatible with org.dom4j.Document

How can I avoid this? None of the above methods are supposed to return that type of Document, and I also try to cast to the correct document type..

EDIT: The problem is db.parse(is) which returns org.w3c.dom ..


Make sure your Element is of type org.dom4j.Element and not org.w3c.dom, javax.bind.xml, etc.

In other words, dom4j API is not compatible with Java's built-in XML API. The two simply do not mix together, unless you operate with Strings (e.g. generate XML in dom4j and parse it with Java's XML or vice versa).


Problem solved!

By using :

DOMReader domReader = new DOMReader();
org.dom4j.Document dom4jDoc = domReader.read(doc);
org.dom4j.Element root = (Element)dom4jDoc.getRootElement();

To create an org.dom4j.Document from the org.w3c.dom.Document

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜