DOM4J解析XML

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;
    }



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值