Как удалить узел из XML? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть xml:

<Info>
    <info_1/>
    <info_2/>
    <info_3>
        <i ID="1"/>
        <i ID="2"/>
        <i ID="3"/>
    </info_3>
    <info_4>
    </indo_4>
</Info>  

Мне нужно удалить определенный узел в info_3, например, узел, в котором ID = 1, как я могу это сделать?

Я пытался сделать это, но журнал показывает до и после длины = 3:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(bb)));
doc.getDocumentElement().normalize();  

NodeList nList = doc.getElementsByTagName("i");  
Log.e("LOG", "nList.getLength() = " + nList.getLength());
Node node=nList.item(1);  
node.getParentNode().removeChild(node);  
Log.e("LOG", "nList.getLength() = " + nList.getLength());

1 Ответ

0 голосов
/ 09 ноября 2018

Решение, которое мне помогло:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(bb)));
doc.getDocumentElement().normalize();  

NodeList nList = doc.getElementsByTagName("i");  
Log.e("LOG", "nList.getLength() = " + nList.getLength());
Set<Element> targetElements = new HashSet<>();
for (int i = 0; i < nList_Loan_guarantor.getLength(); i++) {
  Element e = (Element)nList_Loan_guarantor.item(i);
  if ("10938".equals(e.getAttribute("ID"))) {
  targetElements.add(e);
  }
}

for (Element e: targetElements) {
   e.getParentNode().removeChild(e);
   }

doc.getDocumentElement().normalize();
NodeList nList_2 = doc.getElementsByTagName("i"); 
Log.e("LOG", "nList.getLength() = " + nList.getLength());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...