`
文博Z.BOY
  • 浏览: 12362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Dom4j随笔

阅读更多

 

 

DOM4J中获取Document的方法有三种:

 

<!--[if !supportLists]-->1、  <!--[endif]-->读取XML文件,获得document对象

SAXReader    reader=new  SAXReader();

Document    document=reader.read(new  File(“Input.xml”));

2.解析XML形式的文本,得到document对象.

String text = "<members></members>";
Document document = DocumentHelper.parseText(text);

 

3.主动创建document对象.

Document document = DocumentHelper.createDocument();
//
创建根节点

Element root = document.addElement("members");

利用dom4j解析xml文档中的元素和属性

xml文档中的代码  book.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books[
    <!ELEMENT books (book*)>
    <!ELEMENT book (name,author,price)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT author (#PCDATA)>
    <!ELEMENT price (#PCDATA)>
    <!ATTLIST author address CDATA #IMPLIED>
]>
 
<books>
   <book>
       <name>Java开发</name>
       <author>m_j1</author>
       <price>10000</price>
   </book>
  
   <book>
       <name>Java开发</name>
       <author>m_j2</author>
       <price>10000</price>
   </book>
  
   <book>
       <name>Java开发</name>
       <author>m_j3</author>
       <price>10000</price>
   </book>
  
   <book>
       <name>Java开发1</name>
       <author address="保定 何软 宿舍3号">m_j1</author>
       <price>10000</price>
   </book>
  
  
</books>
 

 

解析元素

解析元素第一种方法

    public static void parse(Element root) {
       parseAttr(root);
       List<Element> list = root.elements();
       for (Element entity : list) {
           // 判断节点类型是否带有文本类型、
           if (entity.isTextOnly()) {
              parseAttr(entity);
              System.out.println(entity.getName());
           } else {
              parse(entity);
           }
       }
    }
 

 

解析元素第二种方法

    public static void parse(Element root) {
       for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
           Element entity = it.next();
           if (entity.isTextOnly()) {
              parseAttr(entity);
              System.out.println(entity.getText());
           } else {
              parse(entity);
           }
       }
    }
 

 

解析属性

解析属性第一种方法

    private static void parseAttr(Element root) {

       List<Attribute> attrs = root.attributes();
       System.out.println(attrs.size());
       for (Attribute entity : attrs) {
           System.out.println(entity.getName() + "-----" + entity.getValue());
       }
    }
 

 

解析属性第二种方法

// 解析属性
    private static void parseAttr(Element root) {
for (Iterator<Attribute> it = root.attributeIterator(); it.hasNext();) {
           Attribute entity = it.next();
           System.out.println(entity.getName() + "--------"
                  + entity.getValue());
       }
    }
 
 

利用dom4j创建xml文档

// 利用的demo4J创建XML文档
    public static void main(String[] args)throws Exception {
       // 创建document对象两种方法   第一种
       Document doc = DocumentHelper.createDocument();
 
       /*第二种
        * DocumentFactory df=new DocumentFactory(); Document
        * doc1=df.createDocument();
        */
       Element root = doc.addElement("books");
       // 添加四个元素
       Element book = root.addElement("book");
       book.addAttribute("isbn", "1001");
       Element name = book.addElement("name");
       name.setText("java编程");
       Element author = book.addElement("author");
       author.setText("aa");
       Element price = book.addElement("price");
       price.setText("000");
       //设置乱码
       OutputFormat format = new OutputFormat("      ",true,"gb2312");
 
        XMLWriter xm=new XMLWriter(new FileWriter("src\\bk.xml"),format);
        xm.write(doc);
        xm.close();
    }
 

 

利用dom4j修改xml文档

 

修改步骤: 1、解析xml文档,将xml文档转换Dom4j

2、利用dom4j树提供的导航方法找到需要修改的节点

3、修改指定的节点,或者在指定的节点添加新的节点

4、写入到dom4jdocument,写入修改后的xml文件中

 

public static void main(String[] args) throws Exception{
    SAXReader reader=new  SAXReader();
    //忽略空白
    reader.setStripWhitespaceText(true);
    Document doc=reader.read(new File("src\\bk.xml"));
    //获取根元素
    Element root=doc.getRootElement();
   
    //在第二个book中的auther后添加address元素
    Element book2=(Element) root.elements("book").get(1);
    List list=book2.elements();
    Element address=DocumentHelper.createElement("address");
    address.setText("保定");
    list.add(2,address);
    /*在第一个book中的name之前添加address元素
     * Element address=DocumentHelper.createElement("address");
    List list= root.element("book").elements();
    address.setText("保定");
    list.add(0, address);*/ 
//  Element address  =    root.element("book").element("author").addElement("address");
    OutputFormat format = new OutputFormat("      ",true,"gb2312");
       XMLWriter xw = new XMLWriter(new FileWriter("src\\bk.xml"),format);
       xw.write(doc);
       xw.close();
}
 
 

利用dom4j删除固定位置的元素

public static void main(String[] args) throws Exception {
       SAXReader reader = new SAXReader();
       // 忽略空白
       reader.setStripWhitespaceText(true);
       Document doc = reader.read(new File("src\\bk.xml"));
       // 获取根元素
       Element root = doc.getRootElement();
       Element book2 = (Element) root.elements("book").get(0);
       Element address = book2.element("address");
       book2.remove(address);
 
       OutputFormat format = new OutputFormat("     ", true, "gb2312");
 
       XMLWriter xw = new XMLWriter(new FileWriter("src\\bk.xml"), format);
 
       xw.write(doc);
       xw.close();
    }
 

1
1
分享到:
评论

相关推荐

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用

    dom4j dom4j dom4j dom4j

    dom4j dom4j dom4j dom4j dom4j dom4j

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    dom4j-2.1.1-API文档-中文版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    dom4j-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar

    dom4j_dom4j1.6.1安装包_

    maven dom4j 1.6.1安装包

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API All Classes Packages org.dom4j org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom...

    dom4j-1.6.1.jar (dom4j) 欢迎下载

    dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口

    DOM4J帮助文档及使用教程

    这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。

    资源jar包dom4j-1.6.1.rar

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...

    dom4j.rar=dom4j API+dom4j.jar

    dom4j.rar 包括dom4j API帮助文档和dom4j.jar包.dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点

    dom4j api 参考手册

    org.dom4j.bean An implementation of the dom4j API which allows JavaBeans to be used to store and retrieve attribute values from Element. org.dom4j.datatype An implementation of the dom4j API which ...

    Dom4j解析XML文档.doc

    Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc

    dom4j 源码

    dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码

    Dom4j常用jar包

    Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包

    dom4j-1.6.1.jar及其2.0.2、2.1.1三个版本的jar包

    内含下载自dom4j官网的 dom4j-1.6.1.jar dom4j-1.6.1.tar.gz dom4j-1.6.1.zip dom4j-2.0.2.jar dom4j-2.1.1.jar

    dom4j框架解析教程

    dom4j技术教程,dom4j是一个很好的解析xml文档的框架

    dom4j-1.6.1-7

    dom4j,用来处理xml

    dom4j Api文档 dom4j-1.6.1 api文档

    dom4j Api文档 dom4j-1.6.1 api文档 dom4j-1.6.1 api文档 dom4j-1.6.1 api文档

Global site tag (gtag.js) - Google Analytics