java读取的xml文件有两个根节点?
输入文件 xml
<?xml version="1.0" encoding="UTF-8"?>
<response>
<message></message>
<messagecode></messagecode>
<messagedescription></messagedescription>
</response>
<response>
<message></message>
<messagecode></messagecode>
<messagedescription></messagedescription>
</response>
两种反应-- 响应id根节点。。 Java代码
public void readXML(String output) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(output);
doc.getDocumentElement().normalize();
NodeList nodes = doc.getElementsByTagName("response");
for (int i = 0; i < nodes.getLength(); i++) {
Node nNode = nodes.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) nNode;
NodeList msg = element.getElementsByTagName("message");
Element line = (Element) msg.item(i);
System.out.println("Message: " + getCharacterDataFromElement(line));
NodeList msgcode = element.getElementsByTagName("messagecode");
line = (Element) msgcode.item(i);
System.out.println("Message Code: " + getCharacterDataFromElement(line));
NodeList msgdes = element.getElementsByTagName("messagedescription");
line = (Element) msgdes.item(i);
System.out.println("Message Description: " + getCharacterDataFromElement(line));
NodeList medialink = element.getElementsByTagName("medialink");
line = (Element) medialink.item(i);
System.out.println("Media link: " + getCharacterDataFromElement(line));
NodeList mediastatus = element.getElementsByTagName("mediastatus");
line = (Element) mediastatus.item(i);
System.out.println("Media Status: " + getCharacterDataFromElement(line));
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "";
}
我尝试了这段代码,但错误将显示我怎么能重新爱上它。。。。 SAX异常将在格式不正确的xml文件中给出错误。 如何读取同一java文件中的两个根节点值
# 1 楼答案
XML应该总是格式良好的,这意味着它只有一个根节点,每个开始标记都应该有一个结束标记。检查W3Schools页面中的XML语法是否正确:http://www.w3schools.com/xml/xml_syntax.asp这里还有许多关于构建XML文档的其他有用信息
如果出于某种原因,您绝对需要处理具有多个根节点的XML,那么可能需要使用子字符串或正则表达式进行手动解析,我不建议这样做
不管是哪种方式,如果你能做些什么,试着形成XML,这样你只有一个根节点。句号
# 2 楼答案
XML没有匹配的开始/结束标记或根节点
这样就足够了: