1 Востаннє редагувалося generation (07.01.2016 01:22:53)

Тема: Як видалити вузел в XML DOM

Я не можу видалити вузел в XML файлі, використовуючи DOM.
Пробував і так:

node.getParentNode().removeChild(elem);
elem.getParentNode().removeChild(elem);

і так:

node.getParentNode().removeChild(node);
elem.getParentNode().removeChild(node);

Різниці 0.
Code:

Прихований текст

        try {
            Document doc = setPath(path); //через інший метод отримуємо Документ
            doc.normalize();
            
            //loop the song child node
            NodeList listNode = doc.getElementsByTagName("song");
            
            for (int i = 0; i < listNode.getLength(); i++) {
                Node node = listNode.item(i);
                
                if(node.getNodeType() == Node.ELEMENT_NODE) {
                    Element elem = (Element) node;
                    if(debug) System.out.println("Val: " + elem.getElementsByTagName("name").item(0).getTextContent());
                    boolean b = elem.getElementsByTagName("name").item(0).getTextContent().equals(name);
                    if(debug) System.out.println("boolean: " + b);
                    if(b) {
                        node.getParentNode().removeChild(elem);
                        if(debug) System.out.println("Removing: " + elem.getElementsByTagName("name").item(0).getTextContent());
                    } else {
                        if(debug) System.out.println("error.");
                    }
                }
            }
            doc.normalize();
            
            System.out.println("Done.");
        } catch (Exception e) {
            e.printStackTrace();
        }

Все працює. Все збігається, а ось тільки вузел не видаляється.

2 Востаннє редагувалося VTrim (07.01.2016 10:53:47)

Re: Як видалити вузел в XML DOM

Це шматок з NodeJS?
Якщо ви видаляєте елемент,то з DOM і візуально він видалиться,але в пам'яті залишиться. Якщо десь після "видалення" його смикнете для показу,то він виведеться.
Це з того,що я знаю про видалення в JS.

=)
Подякували: generation1

3

Re: Як видалити вузел в XML DOM

VTrim написав:

Це шматок з NodeJS?
Якщо ви видаляєте елемент,то з DOM і візуально він видалиться,але в пам'яті залишиться. Якщо десь після "видалення" його смикнете для показу,то він виведеться.
Це з того,що я знаю про видалення в JS.

Це шматок із Java SE. Якщо я Вас привильно зрозумів, то файл залишається в памяті без змін? Я розумію що DOM заносить файл в память і потім там з ним працює(в цьому і різниця DOM від SAX), але як можно внести зміни до файлу що знаходиться на жосткому диску? Переписувати повністю весь файл? Це якось не ефективно буде якщо в файлі 100+ вузлів...

4

Re: Як видалити вузел в XML DOM

http://examples.javacodegeeks.com/core- … -document/