用Dom4j解析XML及中文问题(二)
2007-04-06 15:19
423 查看
4. 修改XML文档
有三项修改任务,依次为:
l 如果book节点中show属性的内容为yes,则修改成no
l 把owner项内容改为Tshinghua,并添加date节点
l 若title内容为Dom4j Tutorials,则删除该节点
说明:
List list = document.selectNodes("/books/book/@show" );
list = document.selectNodes("/books/book");
上述代码通过xpath查找到相应内容。
通过setValue()、setText()修改节点内容。
通过remove()删除节点或属性。
有三项修改任务,依次为:
l 如果book节点中show属性的内容为yes,则修改成no
l 把owner项内容改为Tshinghua,并添加date节点
l 若title内容为Dom4j Tutorials,则删除该节点
/** * 修改XML文件中内容,并另存为一个新文件 * 重点掌握dom4j中如何添加节点,修改节点,删除节点 * @param filename 修改对象文件 * @param newfilename 修改后另存为该文件 * @return 返回操作结果, 0表失败, 1表成功 */ public int ModiXMLFile(String filename,String newfilename){ int returnValue = 0; try{ SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(filename)); /** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */ /** 先用xpath查找对象 */ List list = document.selectNodes("/books/book/@show" ); Iterator iter = list.iterator(); while(iter.hasNext()){ Attribute attribute = (Attribute)iter.next(); if(attribute.getValue().equals("yes")){ attribute.setValue("no"); } } /** * 修改内容之二: 把owner项内容改为Tshinghua * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type */ list = document.selectNodes("/books/owner" ); iter = list.iterator(); if(iter.hasNext()){ Element ownerElement = (Element)iter.next(); ownerElement.setText("Tshinghua"); Element dateElement = ownerElement.addElement("date"); dateElement.setText("2004-09-11"); dateElement.addAttribute("type","Gregorian calendar"); } /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */ list = document.selectNodes("/books/book"); iter = list.iterator(); while(iter.hasNext()){ Element bookElement = (Element)iter.next(); Iterator iterator = bookElement.elementIterator("title"); while(iterator.hasNext()){ Element titleElement=(Element)iterator.next(); if(titleElement.getText().equals("Dom4j Tutorials")){ bookElement.remove(titleElement); } } } try{ /** 将document中的内容写入文件中 */ XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename))); writer.write(document); writer.close(); /** 执行成功,需返回1 */ returnValue = 1; }catch(Exception ex){ ex.printStackTrace(); } }catch(Exception ex){ ex.printStackTrace(); } return returnValue; } |
List list = document.selectNodes("/books/book/@show" );
list = document.selectNodes("/books/book");
上述代码通过xpath查找到相应内容。
通过setValue()、setText()修改节点内容。
通过remove()删除节点或属性。
相关文章推荐
- 用Dom4j解析XML及中文问题(三)
- 用Dom4j解析XML及中文问题
- 用Dom4j解析XML及中文问题
- 用Dom4j解析XML及中文问题
- 用Dom4j解析XML及中文问题
- 用Dom4j解析XML及中文问题(一)
- 用Dom4j解析XML及中文问题
- dom4j解析xml遇中文,加载报错问题
- 用Dom4j解析XML及中文问题
- Dom4j解析XML时中文路径解决方案 no protocol
- dom4j生成xml中文问题
- cocos2d-x 3.0 使用Sax解析xml文档(解决中文显示问题)
- ERROR:使用dom4j解析xml文件遇到中文路径问题
- 用dom4j建立,修改XML文档,并解决格式化输出和中文问题
- parser解析中文问题,xml
- dom4j解析XML时no protocol:编码问题。
- 用dom4j建立,修改XML文档,并解决格式化输出和中文问题
- 解决android中XML解析的中文显示问题
- boost.property_tree解析xml的帮助类以及中文解析问题的解决(转)
- dom4j用XPath解析xml 遇到的问题