xml解析方式
来源:互联网 发布:excel设置数据标签 编辑:程序博客网 时间:2024/06/08 05:42
1.DOM解析
原理:用IO流将xml文件一次性全部读取,加载进内存并以树状结构来存储
优点:适合解析一些小数据量的xml文件
缺点:不适用于大数据量的xml文件的解析,容易发生内存溢出
2.JODM解析
JDOM相比于DOM简化了API,使用起来能简单些
3.SAX解析
原理:不会将整个xml文档一次性全部加载进内存,而是从上到下读取文档,(基于事件驱动的机制)每解析到一个节点就存入集合中。
优点:解决了DOM解析xml文档时占用大量内存的问题,节省了系统资源,适合解析大数据量的xml文档
缺点:读取xml文件时,无法对文件进行修改
4.DOM4J解析
DOM4J的性能最好,非常适合解析大数据量的xml文件,hibernate就是用的DOM4J来读取XML配置文件
有如下xml文件:
<?xml version="1.0" encoding="UTF-8"?><users> <user id="1"> <userName>John</userName> <password>123456</password> </user> <user id="2"> <userName>Daiv</userName> <password>654321</password> </user></users>
解析代码如下:
package com.qjl.mycms.framework.xmlutil.dom4j;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.junit.Test;import com.qjl.mycms.sysmanage.bean.User;/** * 类描述: 通过DOM4J来解析xml文档以及生成xml文档 * 类名称: com.qjl.mycms.framework.xmlutil.dom4j.Dom4jXml * 创建人: qjl * 创建时间: 2017年5月24日 下午9:37:16 * @version V1.0 */public class Dom4jXml { static List<User> userList = new ArrayList<User>(); /** * 将xml文件解析成数据集合 * @Title: xmlToEntity */ public static void xmlToEntity(){ //读取XML文档需要的对象 SAXReader reader = new SAXReader(); try { //通过saxreader读取已存在的文档内容 Document doc = reader.read("src/user.xml"); //获取文档的根元素 Element root = doc.getRootElement(); //获取根元素下面的所有子元素 @SuppressWarnings("unchecked") List<Element> elementList = root.elements(); User user = null; for(Element element:elementList){ user = new User(); //获取属性 Attribute id = element.attribute("id"); //获取值 String value = id.getValue(); //设置实体类的属性值 user.setUserid(new Integer(value)); //获取子元素name Element name = element.element("userName"); user.setUsername(name.getText()); Element password = element.element("password"); user.setUserpassword(password.getText()); userList.add(user); } } catch (DocumentException e) { e.printStackTrace(); } for(User user:userList){ System.out.println(user.getUsername()+"---"+user.getUserpassword()); } } /** * 将数据集合生成xml文件 * @Title: entityToXml */ public static void entityToXml(){ //创建文档对象 Document doc = DocumentHelper.createDocument(); //创建出根元素对象 Element root = DocumentHelper.createElement("users"); //把根元素对象和文档对象关联在一起 doc.setRootElement(root); for(User user:userList){ //为根元素下面添加子元素 Element element = root.addElement("user"); //给子元素添加属性 element.addAttribute("id", user.getUserid().toString()); //为user接着添加子元素 Element name = element.addElement("userName"); name.setText(user.getUsername()); Element password = element.addElement("password"); password.setText(user.getUserpassword()); } //建立字节输出流 OutputStream os = null; //构造XML格式化对象 OutputFormat opf = new OutputFormat(" ",true,"utf-8"); //XML输出对象 XMLWriter writer = null; try { os = new FileOutputStream("src/dom4jUser.xml"); //创建XML输出流 writer = new XMLWriter(os,opf); writer.write(doc); } catch (IOException e) { e.printStackTrace(); }finally{ try { writer.close(); os.close(); } catch (IOException e) { e.printStackTrace(); } } } @Test public void test(){ xmlToEntity(); entityToXml(); }}
阅读全文
1 0
- 【XML】XML解析方式
- 【XML】XML解析方式
- xml-xml解析方式
- xml解析方式
- XML解析方式比较
- XML解析方式
- 解析xml的方式
- XML 解析方式
- dom方式解析xml
- XML解析方式汇总
- xml解析方式
- xml解析多种方式
- Pull解析Xml方式
- DOM方式解析XML
- xml解析方式
- XML解析方式
- XMl资源解析方式
- XML解析方式
- 关于 java swing 使用按钮关闭窗口
- 一步步学习kotlin for android(二)创建kotlin类
- C++中定义动态数组
- 合并表记录
- TabLayout+ViewPager+Fragment实现懒加载
- xml解析方式
- ThreadLocal
- 互联网协会:加密(APP加密)是世界经济增长的关键
- How Data Is Stored In CEPH Cluster
- Java 使用 poi 导出excel 表格
- matlab 常用机器学习算法的实现
- easyui combobox实现搜索下拉补全功能
- 11-散列1 电话聊天狂人 (25分)
- 一天一个Linux命令: cat