在java中将XML转换为文档会创建空文档
我试图用java解析从web下载的xml,下面是stackoverflow和其他来源的示例 首先,我将xml打包为字符串:在java中将XML转换为文档会创建空文档,java,xml,xpath,Java,Xml,Xpath,我试图用java解析从web下载的xml,下面是stackoverflow和其他来源的示例 首先,我将xml打包为字符串: String xml = getXML(url, logger); 如果此时打印出xml字符串: System.out.println("XML " + xml); 我得到了xml的打印输出,所以我假设到目前为止没有错误。 然后我尝试创建一个可以评估的文档: InputSource is= new InputSource(new StringReader(xml));
String xml = getXML(url, logger);
如果此时打印出xml字符串:
System.out.println("XML " + xml);
我得到了xml的打印输出,所以我假设到目前为止没有错误。
然后我尝试创建一个可以评估的文档:
InputSource is= new InputSource(new StringReader(xml));
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(is);
如果我在此处打印文档:
System.out.println("Doc: " + doc);
我得到:
文档:[文档:空]
当我稍后尝试使用Xpath计算表达式时,我得到java.lang.NullPointerException,并且仅当我尝试获取根的长度时:
System.out.println("Root length " + rootNode.getLength());
这让我相信文档和后来的节点都是空的
当我试图打印出输入源或节点时,我得到了例如
输入源:org.xml.sax。InputSource@29453f44
我不知道怎么解释
有人能看出我做错了什么,或者提出前进的方向吗?
提前感谢。您可能需要另一种方式将文档呈现为字符串 用于: 输出
org.xml.sax.InputSource@29453f44
简单地说就是类名+对象类中定义的实例的哈希代码。它表示实例的类没有被重写 谢谢你的建议,可能是重复的。我不认为转换为字符串是个问题,当我稍后尝试使用Xpath对文档中的表达式求值时,我得到一个空节点异常,但如果您告诉我XmlOutputer来自何处,我可以尝试一下。这仅适用于使用JDOM的情况。其他库可能有类似的类:
org.xml.sax.InputSource@29453f44