我试图仅获取所有elemnt类型的节点,然后要执行一些特定的操作,但是在ELEMENT_NODE的情况下,node.getNodeType不能按预期工作-如果所有子节点都被阻塞,它将进入
样本xml-
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.05">
<CstmrPmtStsRpt>
<GrpHdr>
<MsgId>00990119071512383635</MsgId>
<CreDtTm>2019-07-15T12:38:36.304+05:30</CreDtTm>
<InitgPty>
<Nm>appSend</Nm>
</InitgPty>
</GrpHdr>
....
这是我的代码-我想为像MsgId这样的元素做我想做的事情,为GrpHdr我想做一些不同的操作
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringComments(true);
dbf.setValidating(true);
dbf.setNamespaceAware(true);
dbf.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File(fileName));
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
node.normalize();
if( node.getNodeType() == Node.ELEMENT_NODE ){
// do operation for only elements
}else{
// do other operation for non elements
}
}
}catch (Exception e){
}
是否有人遇到过类似的问题,
先感谢您
最佳答案
好吧,以下不是一个好的解决方法-但这就是我解决的方法
元素-永远只有一个孩子。
所以我用下面的代码进行了调整-
if( node.getChildNodes().getLength() != 1 ){
// do operation for only non - elements
}else{
// do other operation for elements
}
我会说这只是解决方法,不是一个好的解决方案