Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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的字符串后,XML文档为空_Java_Xml - Fatal编程技术网

Java 解析包含XML的字符串后,XML文档为空

Java 解析包含XML的字符串后,XML文档为空,java,xml,Java,Xml,我有一个如下所示的XML文档: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="/resources/transform.xslt"?> <map name="response"> <prop name="numConsumers">87</prop> <prop name="numOutEventsQueued">17</pro

我有一个如下所示的XML文档:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/resources/transform.xslt"?>
<map name="response">
    <prop name="numConsumers">87</prop>
    <prop name="numOutEventsQueued">17</prop>
    <prop name="numOutEventsUnAcked">2131</prop>
    <prop name="numOutEventsSent">538108577</prop>
</map>
但问题是,当i=0时,numConsumers是type=text/xsl href=/resources/transform.xslt,当i=1时,所有子节点的值都连接在一起。我做错了什么?我知道当前的代码并没有显式地寻找我想要的节点,但在这一点上,我只是想看看我是否可以找到任何节点

NodeList nodeList  = doc.getChildNodes();
在XMLDOM中,一切都是一个节点。本例中的文档在文档级别有两个节点:声明节点“xml样式表”和文档元素“映射”。根据解析器的配置,如果在document元素之前或之后有空白和模式,而您没有空白和模式,那么您就会得到它

获得您所处位置的方法之一是:

NodeList nodeList=doc.getDocumentElement().getElementsByTagName("prop");
for(int i=0;i<nodeList.getLength();i++{

 String number=nodeList.item(i).getFirstChild().getNodeValue();

}

请注意.getFirstChild.getNodeValue,在XML DOM中,一切都是节点,元素节点的内部内容不是节点的值,而是节点的第一个子节点,第一个子节点的值是“87”或其他值。

可能是因为您只是在读取属性。您应该先学习一些关于如何阅读完整XML的教程。一开始可能会很棘手。这是一个很好的开始,谢谢,但是有没有办法获取每个子节点的name=?否则很难确定何时找到了正确的值
NodeList nodeList=doc.getDocumentElement().getElementsByTagName("prop");
for(int i=0;i<nodeList.getLength();i++{

 String number=nodeList.item(i).getFirstChild().getNodeValue();

}