当循环删除XML中的节点时应该注意删除节点后长度变化的问题。
删除节点的方法:
list = root.getElementsByTagName("LineItemDetails");
length = list.getLength();
for (int i = 0; i < length; i++) {
Node node = list.item(0);
if(node.getParentNode().getNodeName() !=null && !node.getParentNode().getNodeName().equals("AirWaybillBillOfLadingInfo")){
root.removeChild(node);
}
}
方法二:
Element root = doc.getDocumentElement();
NodeList list = root.getElementsByTagName("LineItemDetails");
int length = list.getLength();
for(int i=0;i<list.getLength();i++){
Node nodeItem = list.item(i);
NodeList listChild = nodeItem.getChildNodes();
for(int k=0;k<listChild.getLength();k++){
Node nodeChild = listChild.item(k);
if(nodeChild.getNodeType()==Node.ELEMENT_NODE){
if(nodeChild.getNodeName().equals("MasterAirWaybillNo") || nodeChild.getNodeName().equals("HouseAirWaybillNo") || nodeChild.getNodeName().equals("ConsolidationIndicator") || nodeChild.getNodeName().equals("ConsolidationItemNo")){
nodeItem.removeChild(nodeChild);
k--;
}
}
}
}
方法三:
NodeList list = root.getElementsByTagName("LineItemDetails");
int length = list.getLength();
for(int i=0;i<list.getLength();i++){
Node nodeItem = list.item(i);
NodeList listChild = nodeItem.getChildNodes();
int leng = listChild.getLength();
for(int k=0;k<leng;k++){
Node nodeChild = listChild.item(k);
if(nodeChild.getNodeType()==Node.ELEMENT_NODE){
if(nodeChild.getNodeName().equals("MasterAirWaybillNo") || nodeChild.getNodeName().equals("HouseAirWaybillNo") || nodeChild.getNodeName().equals("ConsolidationIndicator") || nodeChild.getNodeName().equals("ConsolidationItemNo")){
nodeItem.removeChild(nodeChild);
k--;
leng--;
}
}
}
}
总之需要注意删除节点后,listChild.getLength();将重新获得值。。最好采用第三种方式。删除一个节点后将循环变量和总节点数都减少一。。
分享到:
相关推荐
用c#实现XML的dom接口,一般根据元素来找比较容易,根据属性稍显麻烦,而且设计到三个不同的节点。这个对大家应该有用吧。是自己做的哦!
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
功能:删除当前节点的所有子节点,当前节点不删除 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllSon(); /*************************************** ...
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 ->操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的...
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
• DOM 删除节点 • DOM 替换节点 • DOM 创建节点 • DOM 添加节点 • DOM 克隆节点 • DOM HttpRequest • Next Page XML 文档对象模型定义访问和操作XML文档的标准方法。 DOM 将XML 文档作为一个树形结构,而树叶...
使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点
NULL 博文链接:https://oudeyong.iteye.com/blog/2145690
XML应用开发(软件品牌)-1期 6.6 课堂实践-XML DOM删除节点.doc 学习资料 复习资料 教学资源
XML应用开发(软件品牌)-1期 6.6 案例分析-XML DOM删除节点.doc 学习资料 复习资料 教学资源
VB读取XML文件的操作实例,演示读取XML各个定义键的值。程序是一个专一读取XML文件的VB类,并没有使用微软的XML.DLL。因此比较有参考价值,很不错。
java DOM 对xml文件的操作【分别对节点、节点属性、节点内容增删改查】
使用DOM解析XML文件 Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件。对于特别大的文档,解析和加载整个文档可能很慢且很耗资源 http://www.iteye.com/topic/763926
使用Jsoup库解析HTML、XML或URL链接中的DOM节点 Jsoup进行Html的Dom解析
该示例实现MAVEN来进行创建的,实现了dom4j操作XML文件,包括创建XML、动态创建XML节点、更新XML节点、删除XML节点。
Python3 利用dom模块解析xml文件,通过某节点文本值获取兄弟节点的文本值
DOM技术解析XML,获得XML文件中根节点以及所有子节点里面的信息。
javascript下有关dom以及xml节点访问兼容问题
易语言读入xml数据节点值源码。@易语言源码分享站。
主要是Qt5 对XML文件的解析。 有解析,重点是增加,删除,查询,修改功能。 还是很简单的,希望对大家有帮助。