Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将XML转换为文档会创建空文档_Java_Xml_Xpath - Fatal编程技术网

在java中将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));

我试图用java解析从web下载的xml,下面是stackoverflow和其他来源的示例

首先,我将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