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

时间:2016-06-02 08:07:39

标签: java xml xml-parsing domparser

我想解析一个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()方法,但它会为每个节点返回true。

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

2 个答案:

答案 0 :(得分:0)

你可以尝试

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

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

或类似的是

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

答案 1 :(得分:0)

node.hasChildNodes()返回true,因为它将空文本元素视为子项。
因此,在您的情况下,银行包含子空文,然后帐户
解决方案是从XML中删除格式化元素,然后解析它。 您可以使用 node.getNodeType()== Node.ELEMENT_NODE 来检查节点是空文本还是元素节点。