在 java 中使用 DOM 解析器解析 XML 文件时如何找到具有子节点的节点

how to find the node which has child node while parsing XML file using DOM parser in java

我想解析 xml 文档并转换成 json。 我在查找哪个节点有子节点和没有子节点时遇到问题。

示例:

<Bank>
    <Account>
        <Id>1001</Id>
        <Name>Jack Robinson</Name>
       <Amt>10000</Amt>
    </Account>
</Bank>

在这个 xml 文件中,我想找到第一个 Bank 节点有一个子元素,即 Account ,就像 Account 节点有子节点,即 Id、Name、Amt。 但是Id, Name, Amt节点都没有子节点,所以我想这样查找哪个节点有子节点,哪个节点没有?

我正在尝试使用 node.hasChildNodes() 方法,但每个节点都会 return 为真。

请帮我解决这个问题...

你可以试试

NodeList iDNodes = (Account).getElementsByTagName("Id");
int lengthofID = value1Nodes.getLength();

if(lengthofID > 0){
 //..proceed
}

或者类似的是

doc.getChildNodes().item(0).getChildNodes().getLength();

node.hasChildNodes() returns true 因为它发现空文本元素为 child.
所以在你的情况下 Bank 有 child empty text 然后 Account.
一种解决方案是从 XML 中删除格式化元素,然后对其进行解析。 您可以使用 node.getNodeType() == Node.ELEMENT_NODE 检查节点是 空文本 还是元素节点.