我一直试图通过获取item
节点的长度来迭代子节点。但是,它显示原始长度的两倍。
这是我一直在使用的XML代码,
<item>
<title>Title 1</title>
<link>http://www.example.com</link>
<comments>http://www.example.com/#comments</comments>
<pubDate>Mon, 19 Jan 2015 04:05:39 +0000</pubDate>
<dc:creator><![CDATA[Exampple]]></dc:creator>
<category><![CDATA[Hot News]]></category>
<guid isPermaLink="false">http://www.example.com/?p=72278</guid>
<description><![CDATA[<p>Some Description</p>]]></description>
<content:encoded><![CDATA[<p>Some description content.</p>]]></content:encoded>
<wfw:commentRss>http://www.example.com/feed/</wfw:commentRss>
</item>
Java代码:
NodeList nl = doc.getElementsByTagName("item");
int length = nl.getLength();
Log.d("check", "Item i count = " + length); //shows 10
for (int i = 0; i < length; i++) {
Node currentNode = nl.item(i); // Get the first item
String nodetestName = currentNode.getNodeName();
NodeList nchild = currentNode.getChildNodes(); // Get the child nodes of first item
int clength = nchild.getLength(); // Get the length of child nodes of first item (Shows 21 but original length is 10)
我该怎么办?
答案 0 :(得分:1)
尝试忽略空格,它对我有用。
docBuilderFactory.setIgnoringElementContentWhitespace(true);
答案 1 :(得分:0)
可能你是在NodeList中添加项而不清空列表。
答案 2 :(得分:0)
您忘记了子元素之间的空白文本节点也是节点,并且包含在getChildNodes()的结果中。不记得如何最好地解决这个问题:我避免像瘟疫一样使用DOM。