JAVA学习,记录成长

时间:2022-09-16 15:41:07

NodeList的长度是动态的

NodeListc长度是动态的,往其中插入或者删除某个节点,NodeList的长度是动态变化的。

private static Document removeNoImgNode(Document dom, String funCode) throws TransformerException{
Node node = XPathAPI.selectSingleNode(dom, "//img[@imgTypeCode='testNodeList']");
NodeList nodeList = node.getChildNodes();
if(nodeList != null && nodeList.getLength()>0){
for(int i=0; i<nodeList.getLength(); i++){
Node sonNode = nodeList.item(i);
if(!sonNode.hasChildNodes()){
node.removeChild(sonNode);
--i;
}
}
}
return dom;
}

XML中获取单个节点的方法有问题。

Element addImgEle = (Element) XPathAPI.selectSingleNode(flwImg,"//img[@imgCode='testNode']");

如果XML中有多个<img imgCode='testNode'/>,上诉方法总会取第一个。应该根据img标签其他属性来获取自己相要的Elment。

NodeList nodes = XPathAPI.selectNodeList(dom,"//img[@imgTypeCode='testNode']");
Element addImgEle = null;
for(int nodeC = 0; nodes!=null&&nodeC<nodes.getLength()nodeC++){
Element nodesEle = (Element) nodes.item(nodeC);
String myCountStr = nodesEle.getAttribute("myCount");
if(attachedDocument.equals(myCountStr)){
addImgEle = nodesEle;
break;
}
}