我在java中使用DOM表示
如何区分xml标记内部是否有值或是否有其他嵌入标记? 例如,我可以:
<item> 2 </item>
或
<item> <name> item1 </name> </item>
我想做以下
if(condition1 : there is no tags inside item tag) do ...
else do ...
我怎么写条件1?
答案 0 :(得分:2)
您可以通过迭代子节点列表来测试每个子节点:
public static boolean hasChildElements(Element el) {
NodeList children = el.getChildNodes();
for (int i = 0;i < children.getLength;i++) {
if (children.item(i).getNodeType() == Node.ELEMENT_NODE)
return true;
}
}
return false;
}
然后 condition1是(! hasChildElements(el))
。
或者,您可以使用getElementsByTagName("*").getLength() == 0
实施测试。但是,如果是子元素,则此方法将遍历您正在测试的整个片段,并分配大量内存。
答案 1 :(得分:2)
ElementNodes有一个getElementsByTagName method。使用字符串'*'
作为参数调用它(以匹配所有标记名称),然后计算结果数。超过零并且有子元素。
答案 2 :(得分:1)
NodeList nl = docEle.getElementsByTagName("item");
nl.getChildNodes();
如果nodeType是可以放置条件的文本,则可以迭代childNodes以获取nodeType。