Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道一个标记是包含一个值还是另一个标记?_Java_Xml_Dom - Fatal编程技术网

Java 如何知道一个标记是包含一个值还是另一个标记?

Java 如何知道一个标记是包含一个值还是另一个标记?,java,xml,dom,Java,Xml,Dom,我正在java中使用DOM表示 我如何区分一个xml标记内部是有值还是有另一个嵌入的标记? 例如,我可以: <item> 2 </item> 我如何写条件1 您可以通过迭代子节点列表来测试每个子节点: public static boolean hasChildElements(Element el) { NodeList children = el.getChildNodes(); for (int i = 0; i < children.get

我正在java中使用DOM表示

我如何区分一个xml标记内部是有值还是有另一个嵌入的标记? 例如,我可以:

<item> 2 </item>

我如何写条件1

您可以通过迭代子节点列表来测试每个子节点:

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;
}
公共静态布尔元素(元素el){
NodeList childrends=el.getChildNodes();
for(int i=0;i
然后条件1是
(!hasChildElements(el))

或者,您可以使用实现测试。但是,如果有子元素,此方法将遍历您正在测试的整个片段,并分配大量内存。

ElementNodes有一个。使用字符串
'*'
作为参数调用它(以匹配所有标记名),然后计算结果数。大于零且存在子元素

NodeList nl = docEle.getElementsByTagName("item");
nl.getChildNodes();

如果nodeType是文本,则可以在childNodes上迭代以获取nodeType,您可以设置条件

x.childElementCount
(其中
x
是对元素的引用)。如果返回零,则该元素没有子元素。@Šime Vidas还没有进入DOM API的Java实现,是吗?如果在大型文档的根上调用,这将花费很长时间并分配大量内存。
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;
}
NodeList nl = docEle.getElementsByTagName("item");
nl.getChildNodes();