xml解析方式2------dom4j

 dom4j是我最喜欢的一套解析组件,操作简便而且效率高。有了它,dom和sax可以光荣退休了.

下面是dom4j生成xml文件的代码

package dom4j;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class dom4j_writeXML_02 {
 public static void main(String args[]) throws Exception, Exception{
  /**
   * 创建文档对象
   */
  Document document=DocumentHelper.createDocument();
  /**
   *在文档对象下增加根节点
   */
  Element root =document.addElement("addressList");
  /**
   * 在每一个节点下增加子节点
   */
  Element linkMan=root.addElement("linkMan");
  
  Element name=linkMan.addElement("name");
  /**
   * 给name节点添加属性
   */
  name.addAttribute("id", "I am attribute");
  
  Element email=linkMan.addElement("email");
  /**
   * 给name节点设置文本
   */
  name.setText("我是最强的");
  /**
   * 给email节点设置文本
   */
  email.setText("
ekdfj@163.com");
  /**
   * 设置漂亮的输出格式(也可以设置紧凑的输出格式)
   */
  OutputFormat format = OutputFormat.createPrettyPrint();
  /**
   * 以漂亮的格式,将xml文件输出到d:\dom4j.xml文件中
   */
  XMLWriter writer = new XMLWriter(
    new FileOutputStream(new File("d:"+File.separator+"dom4j.xml")),format);
  writer.write(document);
 }
}

看看吧,是不是很方便,理解起来也很容易。真的很佩服设计者的技巧,他的addxxx()方法并不是返回空,而是返回一个节点。这样的话,我们就可以很容易的在某一个节点下增加子节点。

dom4j的读取xml能力也很强

package dom4j;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.*;
import java.util.Iterator;

public class dom4j_ReadXML_01 {
 public static void main(String args[]) throws DocumentException, Exception{
  /**
   * 创建一个解析器
   */
  SAXReader reader=new SAXReader();
  /**
   * 解析xml文档
   */
  Document document=reader.read("d:"+File.separator+"dom4j.xml");
  /**
   * 获得文本的根节点
   */
  Element root=document.getRootElement();
  /**
   * 获得根节点下面的全部子节点
   */
  Iterator linkMans=root.elementIterator();
  /**
   * 遍历节点输出
   */
  while(linkMans.hasNext()){
   Element linkMan=(Element)linkMans.next();
   System.out.println(linkMan.elementText("name"));
   Element name=linkMan.element("name");
   System.out.println(name.attribute("id").getName()+"="+name.attributeValue("id"));
   System.out.println(linkMan.elementText("email"));
  }
 }
}

 

老婆要求加的链接>>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值