2014-11-20 88 views
0

我是新的java和android。我有一个XML文件中像这样:如何删除节点列表的子节点?

<?xml version="1.0" encoding="UTF-8"?> 
<SendList> 
    <listdata> 
     <name>aaaaaa</name> 
     <message>xfhjj</message> 
     <tel>1111222</tel> 
     <icon>list</icon> 
    </listdata> 
    <listdata> 
     <name>bbbbbbbbb</name> 
     <message>ghjchjxff</message> 
     <tel>45885367</tel> 
     <icon>list</icon> 
    </listdata> 
    <listdata> 
     <name>ccccccc</name> 
     <message>hkggcckj</message> 
     <tel>46964788</tel> 
     <icon>list</icon> 
    </listdata> 
</SendList> 

我想删除的每个节点,但与此代码我用我收到空指针异常,除了最后一个节点!

     Node no = document.getFirstChild(); 
         NodeList nl = no.getChildNodes(); 
         for (int n = 0; n < nl.getLength(); n++) { 
          Node list = document.getElementsByTagName("listdata").item(n); 
          NodeList nodes = list.getChildNodes(); 
          for (int i = 0; i < nodes.getLength(); i++) { 
           Node element = nodes.item(i); 
           String t = element.getFirstChild().getTextContent(); 
           if (deleteValueName.equals(t)) { \\deleteValueName for example equal aaaaaa OR bbbbbbbbb 
            if ("name".equals(element.getNodeName())) { 
             Node nd = element.getParentNode(); 
             Node ndParent = nd.getParentNode(); 
             ndParent.removeChild(nd); 
            } 
           } 
          } 
         } 

请帮帮我!

+0

在什么方面是NPE? – 2014-11-20 18:36:25

+0

In Line“NodeList nodes = list.getChildNodes();” – Choubdar 2014-11-20 18:59:16

回答

0

您需要将'document.getElementsByTagName'移出for循环,因为在每次循环之后,您的元素越来越少,因此您最终将获得NPE。尝试这样的:

NodeList nl = document.getElementsByTagName("listdata"); 
for (int n = 0; n < nl.getLength(); n++) { 
    Node list = nl.item(n); 
    NodeList nodes = list.getChildNodes(); 
    ... 
+0

是的,那是谢谢曼! – Choubdar 2014-11-20 19:18:38