关于java Dom4j根据属性删除节点
最近做项目用到XML技术,选择Dom4j来进行操作,XML格式如下:
<?xml version="1.0" encoding="GBK"?>
<chanpin>
<CP name="1" price="1"/>
<CP name="2" price="2"/>
</chanpin>
现在要做的是根据CP的属性name来删除指定的CP节点,已经规定了每个name对应一个唯一的值,下面是java代码:
public static void deleteXML(String name)
{
OutputFormat format = OutputFormat.createPrettyPrint();//指定XML的输出样式
format.setEncoding("GBK"); // 指定XML编码
Document document=null;
SAXReader saxReader = new SAXReader(); // 用来读取xml文档
try {
//url是文件的地址
document = saxReader.read(new File(url));
List list=document.selectNodes("/chanpin");//查找指定的节点
Iterator iterator=list.iterator();//迭代chanpin下所有的节点
while(iterator.hasNext())
{
Element ele=(Element) iterator.next();
Iterator it=ele.elementIterator("CP");//指定到CP
while(it.hasNext())
{
Element es=(Element) it.next();//迭代的所有CP节点
//先确定CP属性不为空,然后再根据name属性来查找到需要的节点 if(es.attributeValue("name")!=null&&es.attributeValue("name").equals(name))
{
ele.remove(es);
}
}
}
} catch (DocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//
try {
//重新写入到XML文档
XMLWriter writer=new XMLWriter(new FileWriter(new File(url)),format);
writer.write(document);
writer.close();
} catch (
IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
------解决方案--------------------楼主没说什么问题?
------解决方案--------------------