2014-11-20 3 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? –

+0

В строке "Узлы узла NodeList = list.getChildNodes();" – Choubdar

ответ

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

Смежные вопросы