Есть ли функция / метод для извлечения дочерних элементов из дочернего элемента? - PullRequest
0 голосов
/ 26 марта 2019

Нуб здесь. Я пытаюсь прочитать XML-файл в Java с помощью DOM, импортируя данные из разных объектов. Поскольку элементы вложены, я пытаюсь получить информацию о каждом ребенке и внуке и не могу прочитать информацию о внуке.

это пример файла

 <?xml version="1.0" encoding="UTF-8"?>
    <AAAA>
        <BBBB>
            <CCC>text</CCC>
            <DDD>
                <a>value</a>
                <b>value</b>
                <c>value</c>
            </DDD>
            <EEE>
                <aa>
                    <a>text</a>
                    <b>
                      <a>value</a>
                      <b>value</b>
                      <c>value</c>
                    </b>
                </aa>
                <bb>
                    <a>text</a>
                    <b>
                      <a>value</a>
                      <b>value</b>
                      <c>value</c>
                    </b>
                </bb>
             </EEE>
        </BBBB>
    </AAAA>

Я могу добраться до узла, но не до следующих.

Это часть кода, который у меня есть:

@SuppressWarnings("unchecked")
    public static List<BBBB> readXMLFileToList(File file) {

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        dbFactory.setIgnoringElementContentWhitespace(true);
        dbFactory.setNamespaceAware(true);
        DocumentBuilder dBuilder;
        List<BBBB> list = new ArrayList<>();

        try {
            dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(file);
            doc.getDocumentElement().normalize();


            NodeList nodeList = doc.getElementsByTagName("AAAA");

            for (int i = 0; i < nodeList.getLength(); i++) {
                list.add(getBBBB(nodeList.item(i)));
            }
        } catch (SAXException | ParserConfigurationException | IOException e1) {
            e1.printStackTrace();

        }
        return list;
    }


    private static BBBB getBBBB (Node node) {

        BBBB bbbb = null;
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            String ccc = getTagValue("CCC", element);
            if (dddNode.getNodeName().trim().equals("#text")) {
                dddNode = element.getFirstChild().getNextSibling();
            }
            DDD ddd = getDDD(dddNode);
            bbbb = new BBBB (ccc, ddd);

        }

        return bbbb;
    }


    private static DDD getDDD(Node node) {
        Element element = (Element) node;
        Double a = Double.parseDouble(getTagValue("a", element));
        Double b = Double.parseDouble(getTagValue("b", element));
        Double c = Double.parseDouble(getTagValue("c", element));
        DDD ddd = new DDD (a,b,c);
        return ddd;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...