powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как грамотно распотрошить дерево DOM
5 сообщений из 5, страница 1 из 1
как грамотно распотрошить дерево DOM
    #34405483
Джентльмены, проблема довольно приземленная средствами явы юзаю XML...

имется XML фаил:
<?xml version="1.0" encoding="UTF-8"?>
<AdressBook total="2">
<person>
Ivanov
</person>
</AdressBook>


соответственно работаю следующими классами


import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


выглядит это так:


File f = new File("data.xml");//data.xml находится в папке проэкта в workspace
Document doc;

try {
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(f);

Node node = doc.getFirstChild();
System.out.println(node.getNodeName());
Node node1 = node.getFirstChild();
System.out.println(node1.getNodeName());
NodeList children = node.getChildNodes();
Node node2 = children.item(1);
System.out.println(node2.getNodeName());
} catch (Exception e){
System.out.println("ERROR!");
}


Output выдаёт в первый раз AdressBook во второй раз #text, а в третий как не странно person... Причем node2.NodeValue null...

В чем проблема???
...
Рейтинг: 0 / 0
как грамотно распотрошить дерево DOM
    #34405540
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
откройте для себя jdom и не мучайтесь.

согласно спецификации на xml распарсилось все верно. почитайте хорстмана - у него есть глава про xml, по моему во 2ом томе.
...
Рейтинг: 0 / 0
как грамотно распотрошить дерево DOM
    #34412157
JIRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выдаёт #text потому что это пробел между тегами. От них можно избавится только, если использовать DTD и устанавливать на фабрике setIgnoringElementContentWhitespace(true). Без DTD этот апроуч не будет работать. Также не забудь установить setValidating(true).
...
Рейтинг: 0 / 0
как грамотно распотрошить дерево DOM
    #34412206
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автороткройте для себя jdom и не мучайтесь.
+1000000000
...
Рейтинг: 0 / 0
как грамотно распотрошить дерево DOM
    #34413288
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да всё нормально работает. Только значение текстовой ноды надо получать немножко иначе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            DocumentBuilderFactory dbf =
            DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            doc = db.parse(f);

            Node node = doc.getFirstChild();         // Возвращает AddresBook
            System.out.println(node.getNodeName());

            Node node1 = node.getFirstChild();    // Возвращает person
            System.out.println(node1.getNodeName());

            Node nodetext=node.getFirstChild(); // Возвращает содержимое person в виде Text
            System.out.println(nodetext.getTextContent());
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как грамотно распотрошить дерево DOM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]