为什么我的xml文件中有#text节点?

时间:2011-07-20 18:33:15

标签: android dom xml-parsing

我正在制作一个在xml文件上进行DOM解析的android应用程序。我有一个xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<family>
    <grandparent>
        <parent1>
            <child1>Foo</child1>
            <child2>Bar</child2>
        </parent1>
        <parent2>
            <child1>Raz</child1>
            <child2>Mataz</child2>
        </parent2>
    </grandparent>  
</family>

如果我在其上运行dom解析器,就像这样:

try {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

    Document doc = builder.parse(input);
    doc.getDocumentElement().normalize();   //added in since the edit
    NodeList nodd = doc.getElementsByTagName("grandparent");
    for (int x = 0; x < nodd.getLength(); x++){
        Node node = nodd.item(x);
        NodeList nodes = node.getChildNodes();
        for(int y = 0; y < nodes.getLength(); y++){
            Node n = nodes.item(y);
            System.out.println(n.getNodeName());
        }
    }
}

我的应用程序打印出以下内容

  

07-20 18:24:28.395:INFO / System.out(491):#text

     

07-20 18:24:28.395:INFO / System.out(491):parent1

     

07-20 18:24:28.395:INFO / System.out(491):#text

     

07-20 18:24:28.395:INFO / System.out(491):parent2

     

07-20 18:24:28.395:INFO / System.out(491):#text

我的问题是,那些#text字段是什么,更重要的是,我该如何摆脱它们?

编辑:现在我知道它们是什么,我试图将其标准化。我已更新代码以反映更改,但结果相同。

3 个答案:

答案 0 :(得分:5)

它是空格(换行符,空格,制表符):)

答案 1 :(得分:1)

这就是你得到的:

1)所有节点都是祖父母的节点列表

NodeList nodd = doc.getElementsByTagName("grandparent");

2)祖父x的所有子节点

NodeList nodes = node.getChildNodes();

的子节点
< grandparent >
    < parent1 >
       ...
    < /parent1 >

    < parent2 >
       ...
    < /parent2 >
< /grandparent >

3)孩子y

nodes.item(y);

之间可能有文字,如果您有,那么这就是您拥有的#text:

< grandparent >
    yourTextHere1
    < parent1 >
       ...
    < /parent1 >
    yourTextHere2
    < parent2 >
       ...
    < /parent2 >
    yourTextHere3
< /grandparent >

你会得到:

yourTextHere1 parent1 yourTextHere2 parent2 yourTextHere3

我希望它对你有所帮助! 于连

答案 2 :(得分:0)

解析文档时执行此操作

Document doc = builder.parse(input); 
doc.getDocumentElement().normalize();

这会使xml文件缩小并删除所有不需要的#text子项。