我需要在下面的示例中获取父标记<test>
下面的子节点数。
因此<username>
,<password>
和<result>
= 3的数量。
<TestData>
<test>
<username>test1234</username>
<password>fake</password>
<result>Incorrect Login or Password</result>
</test>
<test>
<username>abc</username>
<password>1234</password>
<result/>
</test>
</TestData>
我设法得到<test>
的计数如下;
NodeList nList = doc.getElementsByTagName("test");
TEST_CASE_COUNT = nList.getLength();
现在我需要<test>
答案 0 :(得分:2)
要获取特定元素中的子元素的数量,您需要考虑并非所有节点都是元素的事实。例如,您可以使用:
static int getChildElementCount(Element element) {
int count = 0;
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
if (childNodes.item(i).getNodeType() == Node.ELEMENT_TYPE) {
count++;
}
}
return count;
}
使用XPath可能还有一种更简单的方法来选择元素。 (我很少发现XPath是一个更简单的解决方案,但YMMV。)
答案 1 :(得分:0)
我认为你要找的是Node.getChildNodes()
。您必须循环遍历<test>
列表,然后计算每个孩子的子项,并随时添加它们。
NodeList nList = doc.getElementsByTagName("test");
int TEST_CASE_COUNT = nList.getLength();
int nodeCount = 0;
for (int i = 0; i < nList.getLength(); i++) {
Node test = nList.item(i);
nodeCount += test.getChildNodes().getLength();
}