powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как нормально парсит в xml <element Name/>
14 сообщений из 14, страница 1 из 1
как нормально парсит в xml <element Name/>
    #38423212
shms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем Привет! Есть такой xml
<?xml version="1.0" encoding="WINDOWS-1251"?>
<students>
<name>Oleg</name>
<group>15</group>
<addInfo/>
</students>

Когда парсю ошибка java.lang.NullPointerException на addInfo элемент. Как здес нормально парсит xml. Как проверить
что элемент <addInfo/> такой даже не знаю как назвать таких элементы :)). С Dom парсером
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #38423228
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML никак не связан с NullPointerException.
NullPointerException вызван вашим кодом.
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #38423256
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shms, для Java написана огромная туча XML-парсеров, и объект DomDocument не кодил
разве что ленивый. Так что без кода - незачот и понять почему у тебя лезет NPE никто
не сможет.

P.S. Ну... должен быть где-то метод getFirstChild который можно проверить на null. Помогло? не?
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #38423267
shms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Вот мой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    public static void main(String[] args) {
        String xmlfile2 = "<?xml version=\"1.0\" encoding=\"WINDOWS-1251\"?><students><name>Oleg</name><group>15</group><addInfo/></students>";
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        HashMap<String, String> hashMap = null;
        try {
            hashMap = new HashMap<String, String>();
            builder = factory.newDocumentBuilder();
            // Use String reader  
            Document doc = builder.parse(new InputSource(new StringReader(xmlfile2)));
            NodeList kids = doc.getElementsByTagName("students");
            // Element
            for (int i = 0; i < kids.getLength(); i++) {
                Node n = kids.item(i);
                if (n.getNodeType() == Node.ELEMENT_NODE) {
                    NodeList elements = n.getChildNodes();
                    for (int j = 0; j < elements.getLength(); j++) {
                        Node item = elements.item(j);
                         hashMap.put(item.getNodeName(), item.getFirstChild().getNodeValue());  // здес ошибка на null 
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(hashMap.toString());
    }


Result:java.lang.NullPointerException
null
{name=Oleg, group=15}
Что здес нето написано?
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #38423288
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у item нет детей, то
item.getFirstChild() вернет null и вызов метода на null приводит к NPE.
Основы Java. К XML отношения не имееют так же как и к DOM.
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #38423320
shms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо помогло! :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как нормально парсит в xml <element Name/>
    #39228553
chyngyz_zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторесли у item нет детей, то
item.getFirstChild() вернет null и вызов метода на null приводит к NPE.
Основы Java. К XML отношения не имееют так же как и к DOM.

авторBlazkowicz,

Спасибо помогло! :)

Привет всем!

Как именно помогло, и как решить подобную ошибку?
P.S. Только начал изучать Java, и чтение статей про NPE не помогло :-(
Вот код Java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
package wstestclient;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
 
public class WsTestClient {
    public static void main(String[] args)
    {
        try
        {
            File xmlFile = new File("D:\\WebApp\\NewServlet.xml");
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document document = documentBuilder.parse(xmlFile);
            document.getDocumentElement().normalize();
 
            NodeList nodeList = document.getElementsByTagName(document.getDocumentElement().getChildNodes().item(1).getNodeName());
            for(int tmp = 0; tmp < nodeList.getLength(); tmp++)
            {
                Node node = nodeList.item(tmp);
                if(node.getNodeType() == Node.ELEMENT_NODE)
                {
                    Element element = (Element)node;
                    System.out.println(element.getElementsByTagName("author").item(0).getChildNodes().item(0).getNodeValue()); //ошибка здесь
                }
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getLocalizedMessage());
            e.printStackTrace();
        }
    }
}



А это файл NewServlet.xml (папка D:\WebApp), который надо прочитать:
Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<blogs>
  <author>Pavel</author>
  <language>Java</language>
</blogs>
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228555
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chyngyz_zh,

Никогда так не пишите.
Код: java
1.
element.getElementsByTagName("author").item(0).getChildNodes().item(0).getNodeValue()



По крайней мере пока вы начинающий разработчик. Подружитесь с рефакторингом Introduce Variable.

Код: java
1.
2.
3.
4.
5.
NodeList authors = element.getElementsByTagName("author")
Node firstAuthor = authors.item(0);
NodeList firstAuthorChildren = firstAuthor.getChildNodes();
Node firstAuthorChild = firstAuthorChildren.item(0); 
String  value = firstAuthorChild.getNodeValue();
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228562
chyngyz_zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Хорошо.
Но как же с ошибкой java.lang.NullPointerException? Он же все равно будет выходить.
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228563
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chyngyz_zhХорошо.
Но как же с ошибкой java.lang.NullPointerException? Он же все равно будет выходить.
Посмотрите на ваш код и на ваш XML. Код разбитый на переменные делает очевидным тот факт что у тэга author ожидаются дети. Где они в вашем XML?
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228568
chyngyz_zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код:
Код: java
1.
2.
3.
4.
5.
NodeList authors = element.getElementsByTagName("author")
Node firstAuthor = authors.item(0);
NodeList firstAuthorChildren = firstAuthor.getChildNodes(); //здесь возникает ошибка java.lang.NullPointerException
Node firstAuthorChild = firstAuthorChildren.item(0); 
String  value = firstAuthorChild.getNodeValue();



Тег "author" есть в XML файле. Я не пойму, почему тогда возникает такая ошибка...
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228573
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chyngyz_zh,

Ну, у вас выше это кода ещё лапша какая-то накодирована. Приведите код в порядок и используйте пошаговую отладку в IDE. Отлаживать код за вас особого желания нет.
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228580
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chyngyz_zh,

Element element = (Element)node; - соответствует тэгу "author", а вы из него пытаетесь получить опять список узлов с именем "author". Тогда,

element.getElementsByTagName("author")

возвращает пустой список и, соответственно, применение к пустому списку item(0) null.
...
Рейтинг: 0 / 0
как нормально парсит в xml <element Name/>
    #39228597
chyngyz_zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, Valery Shiskin,

Благодарю!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как нормально парсит в xml <element Name/>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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