用DOM4J解析XML文档

 
 
代码示例如下:
 
 
// book.xml文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
    <书>
        <书名>Java就业培训教程</书名>
        <作者>张孝祥</作者>
        <售价>39.00元</售价>
    </书>
    <书>
        <书名>葵花宝典</书名>
        <作者>陈浩</作者>
        <售价>2.00元</售价>
    </书>
</书架>
public   class  dom4j_exercise {

     // DOM4J的使用
     public   static   void  main(String[] args)  throws  Exception {
         // 得到解析器
        SAXReader reader =  new  SAXReader();
         // 得到Document,
        Document document = reader.read( "src/book.xml" );
         // test1(document);
         // test2(document.getRootElement());
         test7 (document);
    }
     // 1、得到某个具体的节点内容:第2本书的作者
     private   static   void   test1(Document document)  throws  Exception  {
         // 1.得到根元素
        Element root = document.getRootElement();
         // 2.得到根元素书里面所有(书)元素的集合(只得到儿子,不得到孙子),注意不是get方法,是element.
        List<Element> books =  root.elements( "书" ) ;
         // 3.得到第二本书
        Element secondBook = books.get(1);
         // 4.得到书中的(作者)元素
        Element author = secondBook.element( "作者" );
        System. out .println(author.getTextTrim());
    }
     // 2、遍历所有元素节点:只打印元素的名称
     private   static   void   test2(Element element)  throws  Exception  {
        System. out .println(element.getName());
         // 一下代码copyDOM4J文档说明Fast Looping
         for  ( int  i = 0, size = element.nodeCount(); i < size; i++) {
            Node node = element.node(i);
             if  (node  instanceof  Element) {
                 test2 ((Element) node);
            }  else  {
                 // do something....
            }
        }
    }
     // 3、修改某个元素节点的主体内容
     // 第二本书售价由2.00元变为1.00元
     private   static   void   test3(Document document)  throws  Exception  {
         // 1.得到根元素
        Element root = document.getRootElement();
         // 2.得到根元素书里面所有(书)元素的集合(只得到儿子,不得到孙子)注意不是get方法,是element.
        List<Element> books =  root.elements( "书" ) ;
         // 3.得到第二本书
        Element secondBook = books.get(1);
         // 4.得到书中的(售价)元素,修改
        Element price = secondBook.element( "售价" );
        price.setText( "1.00元" );
         // 5.写入到文件.复制DOM4J文档说明Writing a document to a file
         // OutputFormat format = OutputFormat.createPrettyPrint();//好看的,默认的输出格式.
        OutputFormat format = OutputFormat. createCompactFormat (); // 不好看的,机器看的
        format.setEncoding( "UTF-8" ); // 设置编码
        XMLWriter writer =  new  XMLWriter( new  FileOutputStream( "src/book.xml" ),
                format);
         // XMLWriter writer = new XMLWriter(new
         // FileOutputStream(" src /book.xml"));
        writer.write(document);
        writer.close();
    }
     // 4、向指定元素节点中增加子元素节点 :在第一本书增加内部价节点,48.00元
     private   static   void   test4(Document document)  throws  Exception  {
         // 1.创建元素DocumentHelper,这个类可以创建好多东西;
        Element e = DocumentHelper. createElement ( "内部价" ).addText( "48.00元" );
         // 2.添加元素到文档中,有父亲才可以添加.
        document.getRootElement().element( "书" ).add(e);
         // 3.写入元素
        XMLWriter writer =  new  XMLWriter( new  FileOutputStream( "src/book.xml" ));
        writer.write(document);
        writer.close();
    }
     // 5、向指定元素节点上增加同级元素节点,在售价上增加批发价58.00元.
     private   static   void   test5(Document document)  throws  Exception  {
         // 1.创建元素DocumentHelper,这个类可以创建好多东西;
        Element e = DocumentHelper. createElement ( "批发价" ).addText( "58.00元" );
         // 2.添加元素到文档中,得到第一本书的孩子们,他们在一个集合中,操作这个集合即可.
        Element book = document.getRootElement().element( "书" );
        List<Element> list =  book.elements() ;
         // 3.批发价是插入到第三个元素,index为2
        list.add(2, e);
         // 4.写入元素
        XMLWriter writer =  new  XMLWriter( new  FileOutputStream( "src/book.xml" ));
        writer.write(document);
        writer.close();
    }
     // 6、删除指定元素节点:删除第一本书的批发价
     private   static   void   test6(Document document)  throws  Exception  {
         // 1.删除元素,得到第一本书的孩子们,他们在一个集合中,操作这个集合即可.
        Element book = document.getRootElement().element( "书" );
        List<Element> list =  book.elements() ;
         // 2.批发价是插入到第三个元素,index为2
        list.remove(2);
         // 3.写入元素
        XMLWriter writer =  new  XMLWriter( new  FileOutputStream( "src/book.xml" ));
        writer.write(document);
        writer.close();
    }
     // 7、操作XML文件属性:第二本书添加出版社="传智"
     private   static   void  test7(Document document)  throws  Exception {
         // 1.得到根元素
        Element root = document.getRootElement();
         // 2.找到第二本书,增加属性,因为是第二本,不是第一本,所以要从集合里区.第一本直接取
        Element book2 = (Element)root.elements( "书" ).get(1);
        book2.addAttribute( "出版社" ,  "传智" );
         // 3.写入元素
        XMLWriter writer =  new  XMLWriter( new  FileOutputStream( "src/book.xml" ));
        writer.write(document);
        writer.close();
    } }

猜你喜欢

转载自blog.csdn.net/zqq3436/article/details/80306720