DOM4J解析XML

来源:互联网 发布:windows八寸平板有哪些 编辑:程序博客网 时间:2024/06/06 19:58

1、新建web工程,在工程右键Buid Path--Configure Buid Path中导入外部dom4j-1.6.1.jar包,同时将其复制到可被servlet找到的 WebContent / WEB-INF/  lib 下

2、在jsp中需要导入要用到的java类的包或类本身,如在标签中写java 语句也需要导入用到的类

3、解析xml文件时,目前需要在解析类中写 xml文件的绝对路径,服务器才可以运行,有待解决

4、package com.topo.dom4j;




import java.io.File;


import java.util.Iterator;
import java.util.List;


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


import com.topo.data.Book;


/**
 * DOM4J 方式解析XML
 */
public class DOM4J {
public static DOM4J dom;
public static Book books = new Book();//这样在类中创建静态属性,这样在jsp中创建实例后,在该web工程在服务器上发布时就在后台运行了这个实例,得到了数据结构,前端只是读取
static{
dom = new DOM4J();
dom.readBookByDOM();
}

    //public void readBookByDOM(File dest) {
public Book readBookByDOM() {

        // 解析books.xml文件
        // 创建SAXReader的对象reader
        SAXReader reader = new SAXReader();
        
        try {
            // 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
            //Document document = reader.read(dest);
            //Document document = reader.read(new File("/WebContent/books.xml"));
        Document document = reader.read(new File("D:/Program Files/eclipse/workspace/TOPO/WebContent/books.xml"));
            // 通过document对象获取根节点bookstore
            Element bookStore = document.getRootElement();
            // 通过element对象的elementIterator方法获取迭代器
            Iterator it = bookStore.elementIterator();
            // 遍历迭代器,获取根节点中的信息(书籍)
            while (it.hasNext()) {
             ////System.out.println("=====开始遍历某一本书=====");
             Element book = (Element) it.next();
             // 获取book的属性名以及 属性值
             List<Attribute> bookAttrs = book.attributes();
             for (Attribute attr : bookAttrs) {
              ////System.out.println("属性名:" + attr.getName() + "--属性值:" + attr.getValue());
              books.getId().add(attr.getValue());
             }
             //解析子节点的信息
             Iterator itt = book.elementIterator();
             while (itt.hasNext()) {
              Element bookChild = (Element) itt.next();
              if(bookChild.getName()=="name"){
             books.getName().add(bookChild.getStringValue());
              }
              else if(bookChild.getName()=="author"){
             books.getAuthor().add(bookChild.getStringValue());
              }
              else if(bookChild.getName()=="year"){
             books.getYear().add(bookChild.getStringValue());
              }
              else if(bookChild.getName()=="price"){
             books.getPrice().add(bookChild.getStringValue());
              }
              ////System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue());
             }
            //// System.out.println("=====结束遍历某一本书=====");
            }


        } catch (DocumentException e) {
            e.printStackTrace();
        }
      return books;
    }



}

原创粉丝点击