zoukankan      html  css  js  c++  java
  • dom4j解析XML学习

    原理:把dom与SAX进行了封装

    优点:JDOM的一个智能分支。扩充了其灵活性增加了一些额外的功能。

    package com.dom4j.xml;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Iterator;
    import java.util.List;

    import org.dom4j.*;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    import org.junit.Test;

    import com.sun.beans.decoder.DocumentHandler;

    public class dom4j {
    public static void main(String[] args) throws Exception {
    //创建SAXReader对象
    SAXReader reader= new SAXReader();
    //reader方法读取一个文件,转换成doucment对象
    Document document= reader.read("src/NewFile.xml");
    //获取根节点元素对象
    Element nodeRoot= document.getRootElement();
    //遍历所有的元素节点
    listNodes(nodeRoot);
    }
    public static void listNodes(Element node){
    //System.out.println("当前节点名称:"+node.getName());
    //获取当前节点的所有属性节点
    List<Attribute> list= node.attributes();
    //遍历属性节点
    for (Attribute attr : list) {
    System.out.println(attr.getName()+":"+attr.getValue());
    }
    //遍历node节点下面的所有子元素节点
    Iterator<Element> it= node.elementIterator();
    while(it.hasNext()){
    // 获取某个子节点对象
    Element e = it.next();
    if(e.elements().size()==0){
    System.out.println(e.getName()+":"+e.getStringValue());
    }
    //递归遍历元素节点
    listNodes(e);
    }
    }
    @Test
    public void creatXML(){
    //创建saxreader对象
    SAXReader reader = new SAXReader();
    //创建根节点
    Document document = DocumentHelper.createDocument();
    Element root = document.addElement("students");
    Element stu= root.addElement("student");
    stu.addAttribute("id", "001");
    stu.addElement("name","张三");
    stu.addElement("sex","男");
    stu.addElement("age","20");
    //
    // 紧凑的格式
    // OutputFormat format = OutputFormat.createCompactFormat();
    //排版
    OutputFormat format= OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    XMLWriter writer;
    try {
    writer = new XMLWriter(new FileOutputStream("src/stu.xml"),format);
    writer.write(document);
    writer.flush();
    writer.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }


    }
    }

  • 相关阅读:
    织梦调用所有栏目一级二级三级和无限级栏目输出
    织梦添加自定义独立模型缩略图字段官方的一个BUG
    织梦搜索结果增加dede:type、dede:arclist、dede:channelartlist、dede:tag等标签支持
    织梦搜索指定多个栏目的文档
    POJ 1001
    #207 Div.2 B. Flag Day
    sublime Text 2 配置 C++ 编译环境
    1011. 复数类
    1008. 二哥买期货
    MySQL/mariadb知识点——视图管理语句
  • 原文地址:https://www.cnblogs.com/lmq3321/p/6674337.html
Copyright © 2011-2022 走看看