Java 如何知道一个标记是包含一个值还是另一个标记?
我正在java中使用DOM表示 我如何区分一个xml标记内部是有值还是有另一个嵌入的标记? 例如,我可以: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
<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();