使用Java XML DOM解析XML,如何正确获取标签列表中的单个标签?
如何用Java DOM解析XML中的
你的问题出在代码查询的节点对象不对:当前代码获取的是<labels>容器节点本身,所以NodeList只会有1个元素,调用getTextContent()会把该节点下所有文本内容拼接输出。要获取每个独立的<label>节点,需要调整查询逻辑,以下是两种可行的解决方案:
方案1:直接查询所有
直接遍历XML中所有的<label>标签,这是最直接的方式:
NodeList labelNodes = elem.getElementsByTagName("label"); for (int j = 0; j < labelNodes.getLength(); j++) { Element label = (Element) labelNodes.item(j); System.out.println(label.getTextContent()); }
方案2:先获取容器,再遍历其子
如果需要限定只在某个<labels>容器下查询,可以先拿到容器节点,再查询其内部的<label>:
NodeList labelsList = elem.getElementsByTagName("labels"); // 确保存在<labels>节点 if (labelsList.getLength() > 0) { Element labelsContainer = (Element) labelsList.item(0); NodeList labelNodes = labelsContainer.getElementsByTagName("label"); for (int j = 0; j < labelNodes.getLength(); j++) { Element label = (Element) labelNodes.item(j); System.out.println(label.getTextContent()); } }
额外注意:修正XML的语法错误
你的XML结构中存在标签闭合错误:<label>的闭合标签写成了</labels>,这会导致DOM解析器无法正确识别节点结构,修正后的XML应为:
<item> <title>test</title> <labels> <label>a</label> <label>b</label> <label>c</label> </labels> </item>
内容的提问来源于stack exchange,提问作者Fabio Lanza
相关产品推荐
相关产品推荐

