Невозможно получить первого ребенка узла Xml - PullRequest
1 голос
/ 06 апреля 2020

Моя проблема в получении первого дочернего элемента узла XML с помощью getFirstChild (). Мой xml очень базовый c, а именно:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <network name="beep">
    <layers number="3">
        <layer index="0" lenght="3">
         ...
        </layer>
        <layer index="1" lenght="3">
         ...           
        </layer>
         ....
    </layers>
    </network>  

Java -код

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.StringReader;
import org.xml.sax.InputSource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

try {
DocumentBuilderFactory DBF = DocumentBuilderFactory.newInstance();
DocumentBuilder DB = DBF.newDocumentBuilder();
Document doc = DB.parse(new InputSource( new StringReader(Xml)));
doc.getDocumentElement().normalize();
Element root = doc.getDocumentElement();
NodeList Nodes =root.getElementsByTagName("network");
Node Layers = Nodes.item(0).getFirstChild();

}
catch (Exception ex)
{

}

, как вы можете видеть, есть элемент, который является дочерним по отношению к «сети», и это «слой». Я могу успешно получить доступ к сети, получая список узлов, который по сути является одним узлом, но как только я пытаюсь получить первого потомка первого (и единственного) узла с:

Node Layers = Nodes.item(0).getFirstChild();

Я получаю exception и, что еще смешнее, the exception is "null".

В чем проблема?

1 Ответ

0 голосов
/ 06 апреля 2020

Я изменил ваш xml на:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<network name="beep">
  <layers number="3">
    <layer index="0" lenght="3">Vishwa</layer>
    <layer index="1" lenght="3">Ratna</layer>
  </layers>
</network>

Java код:

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Main {

  public static void main(String[] args) {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    try {
      DocumentBuilder builder = factory.newDocumentBuilder();

      InputStream inputStream = Main.class
          .getClassLoader().getResourceAsStream("resources/nodes.xml");
      Document doc = builder.parse(inputStream);
      NodeList nodes = doc.getElementsByTagName("network");
      System.out.println(nodes.item(0).getTextContent());

    } catch (FileNotFoundException | ParserConfigurationException e) {
      e.printStackTrace();
    } catch (SAXException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

O / P

Vishwa

Ratna
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...