首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于java Dom4j依据属性删除节点

2013-08-26 
关于javaDom4j根据属性删除节点最近做项目用到XML技术,选择Dom4j来进行操作,XML格式如下:?xml version1

关于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();
}
} Java DOM XML
[解决办法]
楼主没说什么问题?
------解决方案--------------------



[解决办法]
送一个小技巧,不妨将一些常用的方法,提成工具类,比如这里的读取xml文档和生成xml文档


   接分了...

热点排行