如何知道标签是否包含值或其他标签?

时间:2011-07-10 13:37:24

标签: java xml dom

我在java中使用DOM表示

如何区分xml标记内部是否有值或是否有其他嵌入标记? 例如,我可以:

<item> 2 </item>

<item> <name> item1 </name> </item>

我想做以下

if(condition1 : there is no tags inside item tag) do ...
else  do ...

我怎么写条件1?

3 个答案:

答案 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。