无法使用Java中的DocumentBuilder解析重复的xml标记值

时间:2017-09-18 07:37:24

标签: java xml xml-parsing

如果XML对象有一个唯一的内部标记,我就能解析它。但是当我在父标签中有两个重复的标签时,就出现了问题。如何获得两个标签值?我将响应作为XML字符串。

这是我的代码

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(responseXML));
if (is != null) {
    Document doc = db.parse(is);
    String errorCode = "";
    NodeList errorDetails = doc.getElementsByTagName("ERROR-LIST");
    if (errorDetails != null) {
        int length = errorDetails.getLength();
        if (length > 0) {
            for (int i = 0; i < length; i++) {
                if (errorDetails.item(i).getNodeType() == Node.ELEMENT_NODE) {
                    Element el = (Element) errorDetails.item(i);
                    if (el.getNodeName().contains("ERROR-LIST")) {
                        NodeList errorCodes = el.getElementsByTagName("ERROR-CODE");
                        for (int j = 0; j < errorCodes.getLength(); j++) {
                            Node errorCode1 = errorCodes.item(j);
                            logger.info(errorCode1.getNodeValue());
                        }

                    }
                }
            }
        } else {
            isValidResponse = true;
        }
    }
}

我从服务器获得的回复是

<DATA><HEADER><RESPONSE-TYPE CODE = "0" DESCRIPTION = "Response Error" />
</HEADER><BODY><ERROR-LIST>
<ERROR-CODE>9000</ERROR-CODE>
<ERROR-CODE>1076</ERROR-CODE>
</ERROR-LIST></BODY></DATA>

我只能获得9000个错误代码,如何捕获错误列表下的所有错误代码?

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

您明确请求错误列表的第一个元素:

el.getElementsByTagName("ERROR-CODE").item(0).getTextContent();

遍历所有节点getElementsByTagName返回。

NodeList errorCodes = el.getElementsByTagName("ERROR-CODE");
for (int j = 0; j < errorCodes.getLength(); j++) {
    String errorCode = errorCodes.item(j).getTextContent();
}