首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用DocumentBuilder解析重复的xml标记值

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

Stack Overflow用户
提问于 2017-09-18 07:37:23
回答 1查看 736关注 0票数 1

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

这是我的密码

代码语言:javascript
复制
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;
        }
    }
}

我从服务器得到的响应是

代码语言:javascript
复制
<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错误代码,我如何才能捕获所有错误代码下的错误列表?

任何想法都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-18 07:39:55

您正在显式地请求错误列表的第一个元素:

代码语言:javascript
复制
el.getElementsByTagName("ERROR-CODE").item(0).getTextContent();

循环遍历所有节点,getElementsByTagName返回。

代码语言:javascript
复制
NodeList errorCodes = el.getElementsByTagName("ERROR-CODE");
for (int j = 0; j < errorCodes.getLength(); j++) {
    String errorCode = errorCodes.item(j).getTextContent();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46273975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档