Dom4j处理xml

1.XML→Document

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Namespace;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;

public class DomTest {
    
    public static void main(String[] args){
        SAXReader reader = new SAXReader();
        try {
            Document doc = reader.read(new File("D:\\Download\\tmp\\pczz001.xml"));
            Element root = doc.getRootElement();
            Namespace namespace = root.getNamespace();
            System.out.println("namespace:"+namespace);
            String name = root.getName();
            System.out.println("name:"+name);
            Object data = root.getData();
            //System.out.println("data:"+data);
            String text = root.getTextTrim();
            System.out.println("textTrim:"+text);
            String qualifiedName = root.getQualifiedName();
            System.out.println("qualifiedName:"+qualifiedName);
            short nodeType = root.getNodeType();
            System.out.println("nodeType:"+nodeType);
            String nodeTypeName = root.getNodeTypeName();
            System.out.println("nodeTypeName:"+nodeTypeName);
            int nodes = root.nodeCount();
            System.out.println("nodeCount:"+nodes);
            System.out.println("-------------------------下面是child nodes----------------------------------");
            Iterator iterator = root.elementIterator();
            int i = 0;
            while(iterator.hasNext()){
                if(i!=0 && i!=1){
                    return;
                }
                Element next = (Element) iterator.next();
                String name1 = next.getName();
                System.out.println("next---name1:"+name1);
                String textTrim = next.getTextTrim();
                System.out.println("next---textTrim:"+textTrim);
                Iterator iterator1 = next.elementIterator();
                while(iterator1.hasNext()){
                    Element next1 = (Element) iterator1.next();
                    String name2 = next1.getName();
                    System.out.println("next1---name2:"+name2);
                    String text1 = next1.getText();
                    System.out.println("next1---text1:"+text1);

                }
                i++;
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

小结:主要利用SAXReader()对象读取文件获得Document对象,进而利用Document对象对之处理。

2.Document→XML

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.io.FileWriter;
import java.io.IOException;

public class DomTest2 {
    public static void main(String[] args){
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("root");
        Element element1 = root.addNamespace("wocao", "www");
        Element header = root.addElement("header");
        Element body = root.addElement("body");
        Element author = header.addElement("author");
        Element y = author.addText("y");
        Element element = author.addAttribute("gender", "man");
        Element age = author.addAttribute("age", "18");
        Element data = body.addElement("data");
        Element invincible = data.addText("老子天下无敌");
        try {
            FileWriter fileWriter = new FileWriter("foo.xml");
            document.write(fileWriter);
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

小结:利用DocumentHelper创建Document对象,利用Document对象方法完善Document对象,最后也是用Document对象的write方法写入到FileWriter中。

总结:1.处理XML三种方式:https://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html。DOM解析是一次加载全部XML到内存,可对XML增减;SAXReader是流式处理,只可查询,适用于大的XML文件;Digester是将XML转换为JavaBean,多用于框架。

          2.Dom4j官网:https://dom4j.github.io/#creating-document

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值