来源:自学PHP网 时间:2015-04-14 14:51 作者: 阅读:次
[导读] 对xml操作的方式很多,这里主要讲的是dom4j jar对xml的解析方式,以及一些常规操作,源码很简单。创建xml截图:插入信息后截图:增加的事科教节点。修改信息截图:移除信息截图:以...
对xml操作的方式很多,这里主要讲的是dom4j.jar对xml的解析方式,以及一些常规操作,源码很简单。 创建xml截图: 插入信息后截图: vcy92rXjoaM8L3A+CjxwPtDeuMTQxc+ivdjNvKO6PC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140107/20140107095057194.jpg" alt="\"> 移除信息截图: 以上截图是代码实现的对整个xml的简单创建,代码简单,切勿见怪。具体参看代码注释。 package trs.li.parsexml; import java.io.File; import java.io.FileOutputStream; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /**解析xml文件 * @author trsli * 该类主要是个人简单学习dom4j.jar关于解析xml的方式,不具备实用性 * 节点深度在一定程度上会增加难度,这里我就采用了两层,这是一大败笔。 * */ public class ParseXMLDemo { public static void main(String[] args) { try { //createXML();//1创建 //insertXML();//2插入信息 //modifyXML();//3修改 delXML();//4移除 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /**创建xml文件 * 注:刚开始在这里犯了一个错误,后来才知道只有跟节点才是通过document.addElement()创建的 * 由于操作的大致方式与javascript DOM操作类似,所以学习解析xml对于学javascript还是很有好处的 * */ private static void createXML() throws Exception{ String filename="E:\\book.xml"; Document document=DocumentHelper.createDocument(); Element element=document.addElement("books"); element.addAttribute("id", "books"); element.addComment("这是一行注释"); Element celement=element.addElement("book"); celement.addComment("这是一个节点"); celement.addAttribute("value", "小说"); celement.setText("红楼梦"); //element.add(celement); Element element1=element.addElement("book"); element1.addAttribute("value", "技术"); element1.setText("C++"); //element.add(element1); Element element2=element.addElement("book"); element2.addAttribute("value", "教材"); element2.setText("语文"); //element.add(element2); XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File(filename))); xmlWriter.write(document); System.out.println("创建成功..."); xmlWriter.close(); } /**向xml中插入新数据 * addComment()为增加注释 * */ private static void insertXML()throws Exception { Document document=null; SAXReader reader=new SAXReader(); document=reader.read("E:\\book.xml"); Element element=document.getRootElement();//获取根节点 //Element ele=element.element("books"); Element book=element.addElement("book"); book.addComment("这是追加的"); book.addAttribute("value", "科教"); book.setText("星球大战"); XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("E:\\book.xml"))); xmlWriter.write(document); System.out.println("插入成功...."); } /**修改xml文本 * 这里主要是修改属性和节点文本信息 * */ private static void modifyXML()throws Exception { Document document=null; SAXReader reader=new SAXReader(); document=reader.read("E:\\book.xml"); List list=document.selectNodes("/books/book/@value");//查找属性 Iterator it=list.iterator(); while(it.hasNext()){ Attribute attr=(Attribute)it.next();//属性遍历 if(attr.getValue().equals("科教")){ System.out.println("开始修改...."); attr.setValue("科幻小说"); } } //查找结点 List list1=document.selectNodes("/books/book"); Iterator it1=list1.iterator(); while(it1.hasNext()){ Element element=(Element) it1.next();//节点遍历 if(element.getText().equals("语文")){ System.out.println("开始修改2....."); element.setText("数学"); } } XMLWriter xmlwriter = new XMLWriter(new FileOutputStream("E:\\book.xml")); xmlwriter.write(document); System.out.println("完成...."); xmlwriter.close(); } /**删除xml内容 * 如果有更加深的节点需要删除,可以采用多层遍历 * */ private static void delXML()throws Exception{ Document document=null; SAXReader reader=new SAXReader(); document=reader.read("E:\\book.xml"); Element root=document.getRootElement(); List list=document.selectNodes("/books/book"); Iterator it=list.iterator(); while(it.hasNext()){ Element element=(Element) it.next(); if(element.getText().equals("数学")){ System.out.println("删除..."); root.remove(element); } } XMLWriter xmlwriter = new XMLWriter(new FileOutputStream("E:\\book.xml")); xmlwriter.write(document); System.out.println("删除成功..."); xmlwriter.close(); } }
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com