gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:06 27 4
gpt4 key购买 nike

如果 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 错误代码,如何捕获错误列表下的所有错误代码?

任何想法将不胜感激。

最佳答案

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

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();
}

关于java - 无法使用 Java 中的 DocumentBuilder 解析重复的 xml 标记值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46273975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com