Java 当XML中有两个相似的标记时,XML的getNodeValue
我正在使用DOM解析xml,但遇到了一个问题。在xml中,我有三个标记,即str、int和str。现在在解析时,我得到了两个str标记的相同值,而它们应该是不同的 我的XMLJava 当XML中有两个相似的标记时,XML的getNodeValue,java,dom,xml-parsing,Java,Dom,Xml Parsing,我正在使用DOM解析xml,但遇到了一个问题。在xml中,我有三个标记,即str、int和str。现在在解析时,我得到了两个str标记的相同值,而它们应该是不同的 我的XML <result name="response" numFound="62996" start="0"> <doc> <str name="body"> a b c d e f g h i j k l m n o p q r s t u v
<result name="response" numFound="62996" start="0">
<doc>
<str name="body">
a b c d e f g h i j k l m n o p q r s t u v w x y z
</str>
<int name="content_id">123351</int>
<str name="title">
Alphabets
</str>
</doc>
</result>
a b c d e f g h i j k l m n o p q r s t u v w x y z
123351
字母表
用于xml解析的代码
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(gXml));
Document doc = db.parse(is);
NodeList infraline1 = doc.getElementsByTagName(node);
sb.append("<results count=");
sb.append("\"10\"");
sb.append(">\r\n");
for (int i = 0; i < infraline1.getLength(); i++) {
Node node1 = infraline1.item(i);
if (node1.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node1;
NodeList nodelist = element.getElementsByTagName("str");
Element element1 = (Element) nodelist.item(0);
NodeList body = element1.getChildNodes();
sb.append("<result>\r\n");
sb.append("<body>");
sb.append((body.item(0)).getNodeValue().trim());
sb.append("</body>\r\n");
if (node1.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node1;
NodeList nodelist1 = element2.getElementsByTagName("int");
Element element3 = (Element) nodelist1.item(0);
NodeList id = element3.getChildNodes();
sb.append("<id>");
sb.append(id.item(0).getNodeValue().trim());
sb.append("</id>\r\n");
}
if(node1.getNodeType() == Node.ELEMENT_NODE){
Element element4 = (Element) node1;
NodeList nodelist2 = element4.getElementsByTagName("str");
Element element5 = (Element) nodelist2.item(0);
NodeList title = element5.getChildNodes();
sb.append("<title>");
sb.append(title.item(0)).getNodeValue());
sb.append("</title>\r\n");
}
sb.append("</result>\r\n");
}
}
sb.append("</results>");
}
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
InputSource is=新的InputSource();
is.setCharacterStream(新的StringReader(gXml));
文档doc=db.parse(is);
NodeList infraline1=doc.getElementsByTagName(节点);
sb.追加(“\r\n”);
对于(int i=0;i
请提供帮助,因为我需要为两个strnode获取不同的值,我只看到这些语句
Element element1 = (Element) nodelist.item(0);
及
您确定,您正在访问正确的元素
。。。顺便说一下。代码真的很混乱,因为您正在同时解析和写入数据。尝试将解析后的XML放入自己的
对象
或映射
中,然后编写(格式化)它恐怕这段代码非常可怕。你能不能把它简化成一个能说明问题的东西呢?在你的for
循环中,if语句(node1.getNodeType()==Node.ELEMENT\u Node)
定义了三次,你只给node1
赋值一次。这对我来说没有意义。首先,您应该简化代码,然后看看问题所在。
Element element3 = (Element) nodelist.item(0);