【发布时间】:2017-08-21 19:03:00
【问题描述】:
是否有一种简单的方法来检查我从 xpath 评估的 NodeList 是否实际上包含任何子节点,或者它是否只是空标签? 以这个简单的xml为例:
<shop>
<shoes>brand1</shoes>
<tshirt>brand2</tshirt>
<socks>brand3</socks>
</shop>
如果我跑步
NodeList nodeList = (NodeList) path.evaluate("/shop", myDocument, XPathConstants.NODESET);
我会得到一个不错的 NodeList,我可以从中提取各种鞋子、T 恤和袜子的值。没关系。但是如果我有一个看起来像这样的 xml 呢:
<shop>
</shop>
运行相同的命令会给我一个长度为 1 的 NodeList,如果我已经知道它不包含任何内容,我宁愿不继续提取过程。
除了检查是否nodeList.item(0).getChildNodes().getLength() == 1,还有其他方法可以检查空子节点吗?
【问题讨论】:
-
查看Node 的文档你可以做
nodelist.item(0).hasChildNodes() -
nodeList.getLength();?您使用的 NodeList 的实现是什么?也许您可以分享更多代码以使您的问题更清楚。 -
nodeList.getLength() 两种情况都返回 1,nodeList.item(0).hasChildNodes() 两种情况都返回 true
-
尝试
/shop[child::*](或简单的//shop[*])只获取非空shop