Чтение XML-файла из определенных тегов

1

Я новичок в чтении XML файла с помощью Java! На самом деле я хочу прочитать параграфы под конкретным тегом XML:

  <ATTRIBUTE name="Documentation" type="STRING"> </ATTRIBUTE>

  <ATTRIBUTE name="__Variants__" type="LONGSTRING"> </ATTRIBUTE>

  <ATTRIBUTE name="GUID_NPI" type="STRING"> </ATTRIBUTE>

  <ATTRIBUTE name="Status" type="ENUMERATION">None</ATTRIBUTE>

  <ATTRIBUTE name="Order" type="INTEGER">0</ATTRIBUTE>

  <ATTRIBUTE name="Costs" type="DOUBLE">0</ATTRIBUTE>

  <ATTRIBUTE name="Description" type="STRING">CARE management manage manager managing recognised that their capacity to develop developer development developing an insurance       product was limited and they would need to bring in particular expertise. They first       identified an array of basic requirements for the process as a whole: • Understanding of       insurance principles and processes • Experience of microfinance and microfinance clients •       Training skills • Clear vision of the new product development process • Marketing savvy, and       Ability to work with and guide partners that have different backgrounds and motivations.      </ATTRIBUTE>

  <ATTRIBUTE name="Comment" type="STRING"> </ATTRIBUTE>

  <ATTRIBUTE name="External documentation" type="PROGRAMCALL">ITEM "" param:""      </ATTRIBUTE>

  <INTERREF name="Organizational unit"> </INTERREF>

  <ATTRIBUTE name="Info on results" type="STRING"> </ATTRIBUTE>

Итак, у меня есть xml, который содержит абзацы под следующими тегами

и я хочу прочитать данные внутри этих тегов. Я пытался это сделать:

 try {

File fXmlFile = new File("c:\\Data.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);


doc.getDocumentElement().normalize();

System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

NodeList nList = doc.getElementsByTagName("ATTRIBUTE");

System.out.println("----------------------------");

for (int temp = 0; temp < nList.getLength(); temp++) {

    Node nNode = nList.item(temp);

    System.out.println("\nCurrent Element :" + nNode.getNodeName());

    if (nNode.getNodeType() == Node.ELEMENT_NODE) {

        Element eElement = (Element) nNode;

        System.out.println("DATA : "+temp+"  " + eElement.getAttribute("type"));
        System.out.println("PARAGRAPH : " + eElement.getElementsByTagName("ATTRIBUTE").item(0).getTextContent());

    }
}
} catch (Exception e) {
e.printStackTrace();
}

Выход, который я получаю, не является полным:

Root element :ADOXML
----------------------------

 Current Element :ATTRIBUTE
 Staff id : STRING
 java.lang.NullPointerException
at javaapplication5.JavaApplication5.main(JavaApplication5.java:53)

мой полный выпуск должен быть абзацем:

Управление CARE управляет управлением менеджером, признавая, что их способность разрабатывать разработку разработчика, разрабатывая страховой продукт, была ограничена, и им нужно было бы привлечь особый опыт. Сначала они определили ряд основных требований к процессу в целом: • понимание принципов и процессов страхования; • опыт клиентов микрофинансирования и микрофинансирования; • навыки обучения; • четкое представление о процессе разработки нового продукта; • умение маркетинга и умение работать с и руководство партнеров, которые имеют разные фоны и мотивации.

Может кто-нибудь помочь мне, пожалуйста, читайте более конкретно, пожалуйста, спасибо заранее!

Теги:
tags

1 ответ

0

Вы зацикливание через множество узлов в ATTRIBUTE элементов nList. Таким образом, вы получаете один из тех элементов, которые находятся в nNode, печатаете его имя, проверяете, является ли он Element (он), eElement его в eElement и успешно получают его type атрибута.

Но затем вы пытаетесь получить набор узлов с именем ATTRIBUTE в контексте eElement:

eElement.getElementsByTagName("ATTRIBUTE")

который не существует (ваш элемент содержит только текст - символ пробела, фактически), а не набор узлов элементов ATTRIBUTE.

Итак, у вас есть нулевая ссылка. Если вы вызываете какой-либо метод на нулевой ссылке, вы получаете NullPointerException.

Что вы, вероятно, захотите сделать здесь, это получить eElement.getNodeValue() который даст вам текстовое содержимое тега.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню