парсинг Xml на Java - PullRequest
       114

парсинг Xml на Java

1 голос
/ 07 августа 2020

Существует XML документ вроде этого:

<root>
    <a/>
    <a/>
    <a/>
    <b>
        <c/>
            <d/>
        <c/>
            <d/>
        <c/>
            <d/>
    </b>
</root>

Следующий код используется для получения "a" NodeList:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlfile);
doc.getDocumentElement().normalize();
NodeList aNodes = doc.getElementsByTagName("a");

Но как в Java я могу получить NodeList из «c»? Я попытался получить узлы из узлов «b», но это не дало результатов, getlength () = 0.

NodeList bNodes = doc.getElementsByTagName("b");
NodeList cNodes = bNodes.item(0).getChildNodes();

1 Ответ

1 голос
/ 07 августа 2020

Вы можете получить их с помощью doc.getElementsByTagName("c") вот так.

NodeList cNodes = doc.getElementsByTagName("c");
for (int i = 0; i < cNodes.getLength(); ++i)
    System.out.println(cNodes.item(i));

output:

[c: null]
[c: null]
[c: null]

Я также могу получить NodeList из «b».

NodeList bNodes = doc.getElementsByTagName("b");
NodeList bChildren = bNodes.item(0).getChildNodes();
for (int i = 0; i < bChildren.getLength(); ++i)
    System.out.println(bChildren.item(i));

вывод:

[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
    ]
...