打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
javaAPI解析XML文件--DOM4J
javaAPI解析XML文件有两种方式
1、DOM (Document Object Model 文档对象模型)
       优点:把XML文件在内存中构造成树型结构,支持删除、修改、重新排列等多种功能;
       缺点:如果文件比较大,内存有压力,解析时间会比较长。

2、SAX (Simple API for Xml 基于Xml的简单API)
把XML文件作为输入流。
SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,
发送事件,程序员编写响应这些事件的代码,保存数据。
优点:解析可以立即开始,速度快,没有内存压力
缺点:不能对节点进行修改


目前市面上两种解析XML文件的API: DOM4J/JDOM

DOM4J解析xml文件:
1、创建空白document文档对象

  • //创建一个空的文档对象
  • Document doc = DocumentHelper.createDocument();

  • 2、读取xml文件,返回document对象

  • //解析器
  • SAXReader reader = new SAXReader();
  •  //指定XML文件
  •  File file = new File(fileName);
  • //开始解析,构建树型结构并返回
  • Document doc = reader.read(file);

  • 3、分析元素

  • //获得根元素,员工列表
  • Element rootElmt = doc.getRootElement();
  • //获取所有的员工列表
  • List list = rootElmt.elements("emp");
  • //解析所有员工的元素集合 
  •  Iterator it = list.iterator();
  • while(it.hasNext()){
  • //员工的元素
  • Element empElmt = (Element)it.next();
  • //员工的子节点"id"的值
  • String empId = empElmt.elementText("id");
  •        //员工的属性迭代器
  • Iterator attrIt = empElmt.attributeIterator();
  • while(attrIt.hasNext()){
  • //员工的属性
  • Attribute attr = (Attribute)attrIt.next();
  • //打印员工的属性的名和值
  • System.out.println(attr.getName()+"="+attr.getValue());
  • }
  • }

  • 4、增加元素,并为元素设置数据或属性,删除元素
  • //为empElmt元素增加一个"id"子元素
  • Element idElmt = empElmt.addElement("id");
  • //为"id"子元素设置值
  • idElmt.setText("3");
  •  //为emp元素增加type属性
  • empElmt.addAttribute("type", "leader");
  • //为empElmt元素删除一个叫"id"的子元素
  • empElmt.remove(idElmt);

  • 5、输出xml文件

  • //创建一个java.io包中的FileWriter对象,指定目标文件
  • FileWriter fw = new FileWriter(filename);
  • //指定XML文件的输出格式
  • OutputFormat format = OutputFormat.createPrettyPrint();
  • format.setEncoding("utf-8");
  • //写出xml文件到操作系统
  • XMLWriter xw = new XMLWriter(fw,format);//指定参数
  • xw.write(doc); //写出文档对象
  • xw.close();

  • 6、dom4j对XPath的支持(w3c的标准)

  • SAXReader reader = new SAXReader();
  • Document doc = reader.read(new File(fileName));
  • // 获得根元素,员工列表,绝对路径 "/emps"
  • Node node = doc.selectSingleNode("/emps");
  • // 获取所有的员工列表,相对路径 "emp"
  •   List list = node.selectNodes("emp");
  •  // 根据条件获取员工列表
  •  // 相对路径 emp/id
  •  // 过滤条件 [@type='admin']     @后面跟属性,如果是元素直接写
  • // 运算符可以是 "=",">","<","or","and"
  •  List list = node.selectNodes("emp/id[@type='admin']");

  • 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    使用dom4j读取xml文档的四种方式
    dom4j使用基本指南
    org.dom4j.DocumentException : 1 字节的 UTF
    构建ApplicationContext对象 * 时,读取指定的文件(xml)
    dom4j解析xml和创建xml文件 递归!!
    使用Dom4j解析XML
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服