Найти в XML нужный Node и удалить из файла

 
 
 
Сообщения:12
Здравствуйте, уважаемые форумчане! Возникла проблема. Может, я что не так понял. Недавно изучаю java. Задача следующая: есть файл XML типа

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Students>
<Student>
<Id>1</Id>
<Fio>Аслаханов Гурий Арсеньевич</Fio>
</Student>
<Student>
<Id>2</Id>
<Fio>Андреев Корнилий Августович</Fio>
</Student>
<Student>
<Id>3</Id>
<Fio>Богров Вячеслав Леонтьевич</Fio>
</Student>
<Student>
<Id>4</Id>
<Fio>Кондюрин Амаяк Альбертович</Fio>
</Student>
<Student>
<Id>5</Id>
<Fio>Князев Ульманас Петрович</Fio>
</Student>


Нужно найти Node с именем Student по значению индекса ID. И удалить из файла. Собственно сейчас проблема в поиске. Пытаюсь вывести найти нужный Student по ID
Написал такой код:

void getID() throws ParserConfigurationException, IOException, SAXException {
        final File xmlFile = new File("E:\\Java\\DekanatDemo\\Students2.xml");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(xmlFile)          
        NodeList nodeListStudents = doc.getElementsByTagName("Student");
        System.out.println(nodeListStudents.getLength());
        for (int i = 0; i < nodeListStudents.getLength(); i++) {
            Node nextNode = nodeListStudents.item(i);
            if (nextNode.getFirstChild().getTextContent().equals("1"))
            System.out.println(nextNode.getFirstChild().getTextContent());
            }
    }
    


Но при этом не выводится ничего. Хотя логически все вроде бы верно. Получаю ноды Student, прохожу по ним, проверяю на соответствие значения первой дочерней ноды Student(Id). Пытался и по-другому получить список нод. Но все равно не выходит.
Удалось только получить только результаты nextNode.getTextContent() - вывелись пары - id-fio. Но дочернюю ноду id вывести не получается. Спасибо!
Изменен:13 июн 2018 14:30
 
 
Сообщения:284
Между именованными узлами такими, как Id, Fio могут быть элементы типа Node.TEXT_NODE. В коде надо проверять на тип узла, который Вы получаете при переборе.
 
 
Сообщения:12
Спасибо! Все прояснилось и заработало!
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет