访问子节点的长度返回原始计数的两倍

时间:2015-01-19 04:55:25

标签: java android xml dom

我一直试图通过获取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)

我该怎么办?

3 个答案:

答案 0 :(得分:1)

尝试忽略空格,它对我有用。

docBuilderFactory.setIgnoringElementContentWhitespace(true);

答案 1 :(得分:0)

可能你是在NodeList中添加项而不清空列表。

答案 2 :(得分:0)

您忘记了子元素之间的空白文本节点也是节点,并且包含在getChildNodes()的结果中。不记得如何最好地解决这个问题:我避免像瘟疫一样使用DOM。