java--DOM4j-SAXReader对xml文档的解析2
2016-09-17 14:53
459 查看
DOM4j-SAXReader解析:
Dom SUN:dom在加载时,将所有元素全部加载内存
DOM4j-第三方。
Dom4j是一个开源、灵活的XML API。
目前很多开源框架如struts,hibernate都使用dom4j做为解析其xml的工具。
支持文档的读写功能和Xpath快速查询操作。
准备DOM4j:
包: dom4j.x.jar包结构: org.dom4j
类:
org.dom4j.io.SAXReader–xml文档解析器
org.dom4j.Document、Element–文档对像
1.Element的一些方法
2.Element.element(“name”)-此元素下的第一个name元素。
3.Element.elementIterator(“name”)–此元素下的所有name元素。返回Iterator
5.Element.getText()–返回元素包含的文本。
6.Element.getAttribute(“name”)–返回名称为name的属性。
7.Element.addElement(“name”);-添加一个name元素,同时返回name元素本身。
org.dom4j.io.XMLWriter – 将Document写出的对像。
准备XML数据:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <users> <user id="A001"> <name>jack</name> <age>23</age> </user> <user id="A002"> <name>张三</name> <age>20</age> </user> <user id="A003"> <name>李四</name> <age>60</age> </user> </users>
import java.io.File; import java.io.FileOutputStream; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; public class dom4jDemo { @Test//读取users.xml中第一个<user>元素的信息 public void ReadDemo() throws Exception{ //获取dom对象 SAXReader reader=new SAXReader(); Document dom=reader.read("./xml/users.xml"); //获取根结点 Element eUsers=dom.getRootElement(); Iterator it=eUsers.elementIterator(); while(it.hasNext()){ Element e=(Element) it.next(); String id=e.attributeValue("id"); String id2=e.attribute("id").getValue(); String name=e.element("name").getText(); String name2=e.elementText("name"); System.out.println("id="+id+"id2="+id2+"name="+name+"name2="+name2); } } @Test//读取users.xml中第一个<user>元素的信息 public void WriterDemo() throws Exception{ //获取dom对象 SAXReader root=new SAXReader(); Document dom=root.read("./xml/users.xml"); //获取根结点 Element eUsers=dom.getRootElement(); Element userNew=eUsers.addElement("user"); userNew.addAttribute("id", "B001"); userNew.addElement("name").setText("new"); // userNew.element("name").addText("new"); //userNew.addElement("name").addText("new"); // userNew.addElement("name", "new"); // XMLWriter w=new XMLWriter(new FileOutputStream("./xml/usersOut.xml"));//将待存储的dom树存到./xml/usersOut.xml中,也可以是原文档,但是会把原来的数据冲掉 w.write(dom); w.close();//字符流中有缓存,必须手动刷 } @Test//把最后一个节点删除 public void DeleteDemo() throws Exception{ SAXReader reader=new SAXReader(); Document dom=reader.read(new File("./xml/users.xml")); Element root=dom.getRootElement(); // 获取最后一个root结点 List<Element> list=root.elements();// // root.remove(list.get(list.size()-1)); Element e=list.get(list.size()-1); e.getParent().remove(e); XMLWriter w=new XMLWriter(new FileOutputStream("./xml/usersOut2.xml")); w.write(dom); w.close(); } @Test//把最后一个节点修改 public void ChangeDemo() throws Exception{ SAXReader reader=new SAXReader(); Document dom=reader.read(new File("./xml/users.xml")); Element root=dom.getRootElement(); // 获取最后一个root结点 List<Element> list=root.elements();// // root.remove(list.get(list.size()-1)); Element e=list.get(list.size()-1); // e.attribute("id").setText("c001"); e.addAttribute("id","c001");//如果该属性存在就修改,不在就添加 e.element("age").setText("20"); XMLWriter w=new XMLWriter(new FileOutputStream("./xml/usersOut3.xml")); w.write(dom); w.close(); } @Test//本地原来不存在xml文档,现通过程序生成一个新的xml文档 public void CreateDemo() throws Exception{ //利用DocumentHelper类在内存中生成一个空的dom对象 Document dom=DocumentHelper.createDocument(); //为dom构建树 Element root=dom.addElement("cities"); Element ecity=root.addElement("city"); ecity.addAttribute("id", "0727"); ecity.addElement("name", "yiyang"); ecity.addElement("history", "100"); //把dom对象树存储到本地文件 XMLWriter w=new XMLWriter(new FileOutputStream("./xml/city.xml")); w.write(dom); w.close(); } }
相关文章推荐
- JSON、XML、TOML、CSON、YAML 大比拼
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- Ruby中XML格式数据处理库REXML的使用方法指南
- C#实现导出List数据到xml文件的方法【附demo源码下载】
- C#中如何使用 XmlReader 读取XML文件
- C#针对xml基本操作及保存配置文件应用实例
- Ruby使用REXML库来解析xml格式数据的方法
- Ruby程序中创建和解析XML文件的方法
- Ruby的XML格式数据解析库Nokogiri的使用进阶
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#代码操作XML进行增、删、改操作