dom4j解析

dom4j解析

xml

<?xml version="1.0" encoding="utf-8"?>

<!--引入dtd去约束该xml文件-->
<班级> 
  <学生 性别="女" 学号="sp002"> 
    <名字>林青霞</名字>  
    <介绍>学习刻苦</介绍>  
    <年龄>23</年龄> 
  </学生>  
  <学生> 
    <名字>宋江</名字>  
    <年龄/>  
    <介绍/> 
  </学生>  
  <学生>林冲</学生>
  <学生> 
    <名字>宋江</名字>  
    <年龄/>  
    <介绍/> 
  </学生> 
</班级>

sax解析

要引入dom4j的jar包

package com.dom4j.test;

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

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

/**
 * Created by 宋贤 on 2015/10/14.
 */
public class Dom4jTest {
    //演示用dom4j来对xml进行crud操作
    public static void main(String[] args) throws Exception{

        SAXReader saxReader=new SAXReader();
        Document document=saxReader.read(new File("src/com/dom4j/test/myClass2.xml"));
//        list(document.getRootElement());
//        read(document);
//        add(document);
//        delete(document);
        addByIndex(document);
    }
    public static void list(Element element){
        System.out.println(element.getName()+" "+element.getTextTrim());
        Iterator iterator=element.elementIterator();
        while (iterator.hasNext()){
            Element element1=(Element)iterator.next();
            list(element1);
        }
    }
    //读取
    public static void read(Document document){
        Element root=document.getRootElement();
        //取出root下的所有学生元素
        Element stu=(Element)root.elements("学生").get(0);
//        System.out.println("名字:"+stu.element("名字").getText());
        Element stu_name=stu.element("名字");
        System.out.println("名字:"+stu_name.getText()+" 性别:"+stu_name.attributeValue("性别"));
        //看下面代码能否跨层取
        //不能跨层取
//        Element stu2=(Element)root.elements("名字").get(0);
//        System.out.println(stu2.getText());
    }
    //读取
    public  static  void add(Document document) throws Exception{
        Element newStu= DocumentHelper.createElement("学生");
        Element newStu_name= DocumentHelper.createElement("名字");
        newStu_name.setText("宋江");
        Element newStu_age= DocumentHelper.createElement("年龄");
        Element newStu_intro= DocumentHelper.createElement("介绍");
        //把三个元素添加到newStu下
        newStu.add(newStu_name);
        newStu.add(newStu_age);
        newStu.add(newStu_intro);
        //把newStu加到根元素之下
        document.getRootElement().add(newStu);
        //可能出现中文乱码
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
    //删除
    public  static void delete(Document document)throws Exception{
        Element stu=document.getRootElement().element("学生");
//        stu.getParent().remove(stu);
        stu.remove(stu.attribute("大哥"));
        //可能出现中文乱码
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
    public static void addByIndex(Document document)throws Exception{
        Element element=DocumentHelper.createElement("学生");
        element.setText("林冲");
        List list=document.getRootElement().elements("学生");
        for (int i=0;i<list.size();i++){
            Element name=((Element)list.get(i)).element("名字");
            if(name.getText().equals("宋江")){
                list.add(i+1,element);
                break;
            }
        }
//        list.add(1,element);
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值