我遇到了一些什么问题应该是简单的DOM解析。我检查了很多问题,至今没有任何事情帮助我的情况。问题是我有一些可能出现在XML中的条件节点,或者可能不会出现。我创建的工具必须将这些值的内容保存到ArrayList中以供以后使用。这里是有问题的XML:有条件的Java解析 - 获取子节点内容
-<Dbtr>
-<PstlAdr>
<AdrLine>111 Arlington Ave</AdrLine>
<AdrLine>Apartment A</AdrLine>
<AdrLine>Augusta, AZ 11100</AdrLine>
</PstlAdr>
</Dbtr>
具体来说,Dbtr标记可能出现在XML中的任何次数。对于每个Dbtr标签,可能会有1-4个AdrLine子女。我需要能够保存每个AdrLine的值,如果没有值,则为每个值保存一个空白的“”值到数组列表中。
要做到这一点,我写了下面的代码:
NodeList Dbtr = doc.getElementsByTagName("Dbtr");
for(int i = 0; i < Dbtr.getLength(); i++){
NodeList DbtrChildren = Dbtr.item(i).getChildNodes();
if(DbtrChildren.getLength()==1){
//Add the first child.
}else if(DbtrChildren.getLength()==2){
//Add the first & second child.
}else if(DbtrChildren.getLength()==3){
System.out.println("Test Flag");
System.out.println(DbtrChildren.item(0).getNodeValue()+"Node Value");
System.out.println(DbtrChildren.item(0).getAttributes()+"Text Attributes");
System.out.println(DbtrChildren.item(0).getTextContent()+"Text Content");
}else if(DbtrChildren.getLength()==4){
//Add all 4 children.
}
}
所以根据子女人数AdrLine节点的值,要么被保存到一个数组列表,或者为空值将被保存。
问题是,无论我做什么,我都会为孩子们获得空白值。在测试过程中,我可以清楚地看到Dbtr标签确实有3个孩子。正如你所看到的,我试图做一些调试来找出获取值的方法。看到下面的结果:
Test Flag
Node Value
nullText Attributes
Text Content
所以我得到了大量的空白,但没有价值。当然,我认为它可能实际上是在拾取“PstlAdr”,但为什么它会成功检测到3个子节点?
任何帮助非常感谢。