首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>编程相关>XML>使用JAXP解析xml文件示例
使用JAXP解析xml文件示例
来源: 发布时间:2007-11-08 发布人: 浏览: 人次   字体: [ ]  

如前面所述,通过一个工厂方法得到一个SAXParser的实例,然后就可以编译这个xml文件了。这样你就可以得到如下结果:

Customer: ID =''''#001'''' Name=''''Micke'''' Address=''''Najing'''' 
Customer: ID =''''#002'''' Name=''''Car'''' Address=''''Suzhou'''' 
Customer: ID =''''#003'''' Name=''''Jimmy'''' Address=''''ChengDu'''' 
Customer: ID =''''#004'''' Name=''''Henry'''' Address=''''Xi''''an''''

Sax的系统框架中还有其他得好些方法,读者不妨试试他们是如何使用的,这对以后实战处理xml文件会有很大的方便。

DOM

DOM的框架轮廓

DOM的API概述

一般而言,我们使用javax.xml.parsers.DocumentBuilderFactory来得到DocumentBuilder的一个实例。当然你也可以DocumentBuilder newDocument()方法来得到一个实现了org.w3c.dom.Document接口的空的Document对象。

  • DocumentBuilderFactory
    它可以根据系统属性生成一个builder实例。

  • DocumentBuilder
    用于处理生成Document。

更详细地api介绍,请参看DOM的官方API文档。

所以我们可以简单地这样:

DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("test.xml");

就可以出得到一个Document。

实例:

我们依然处理test.xml。和SAX一样,也需要有paser。其实思路是非常简单而明晰的,上面我们已经说过,DOM是将所有的xml读入内存,以树的结构来处理的,所以呢,对节点的分析就是解决问题的关键,如下。

代码如下:

/*
 * Test.java
 * Created on 2004-4-10
 * by Jiabo
 */
import org.w3c.dom.*;
/**
 * Test
 * Create on 2004-4-10 19:20:27
 * by Jiabo
 */
public class Unmarshaller {

  public Unmarshaller() {
  }

  public Customers UnmarshallCustomers(Node rootNode) {
    Customers customers = new Customers();

    Node n;
    NodeList nodes = rootNode.getChildNodes();

    for (int i = 0; i < nodes.getLength(); i++) {
      n = nodes.item(i);
      if (n.getNodeType() == Node.ELEMENT_NODE) {
        if ("customer".equals(n.getNodeName())) {
          customers.addCustomer(UnmarshallCustomer(n));
        } else {
        }
       }
    }
    return customers;
  }

  public Customer UnmarshallCustomer(Node customerNode) {
    Customer customer = new Customer();

    Node n;
    NodeList nodes = customerNode.getChildNodes();

    for (int i = 0; i < nodes.getLength(); i++) {
      n = nodes.item(i);
      if ("id".equals(n.getNodeName())) {
        customer.setId(UnmarshallText(n));
      } else if ("name".equals(n.getNodeName())) {
        customer.setName(UnmarshallText(n));
      } else if ("address".equals(n.getNodeName())) {
        customer.setAddress(UnmarshallText(n));
      }
    }
    return customer;
  }

  public String UnmarshallText(Node textNode) {
    StringBuffer buf = new StringBuffer();

    Node n;
    NodeList nodes = textNode.getChildNodes();

    for (int i = 0; i < nodes.getLength(); i++) {
      n = nodes.item(i);

      if (n.getNodeType() == Node.TEXT_NODE) {
        buf.append(n.getNodeValue());
      } else {
      }
    }
    return buf.toString();
  }
}

下面是如何驱动DOM去处理xml文件部分。还是先得到一个DocumentBuilderFactory工厂,在用他生成一个DocumentBuilder一个实例,在调用parse方法就可以分析这个xml文件了。

/* 
 * main.java
 * Create @ 2004-4-27 22:18:41
 * by Jiabo
 */
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
/**
 * main
 * Create @ 2004-4-27 22:18:41
 * by Jiabo
 */
public class Main {
  public static void main(String args[]) {

    Customers customers = null;
    Document doc = null;
    if (args.length != 1) {
      System.err.println("Usage: cmd filename");
      System.exit(1);
    }
		
    try {
      Unmarshaller handler = new Unmarshaller();
      DocumentBuilderFactory factory = 
	    DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      doc = builder.parse( new File(args[0]) );
			
      customers = handler.UnmarshallCustomers(doc.getDocumentElement());

    } catch (Throwable t) {
      t.printStackTrace();
    }
    System.out.println(customers);
  }
}

总结:

这里是对xml处理的一个简介,力求简介,明了,以最快的速度帮助读者入门,所以,没有完整地使用库中的方法。

Xml文件的处理,对于webservice是基础的基础。而SAX和DOM又是xml处理中基础的基础。浊文请读者笑纳。


共3页: 上一页 [1] [2] 3 下一页
相 关 文 章   发布商链接
·小解一个简单的XMLSchema的例子
·xml数据岛绑定时的超链接处理代码
·要学会使用xmlbeans解析xml
·实例分析Xml解析校验引起的依赖问题
·XPath语法定义及其使用介绍
·目前主流的XML编程接口API介绍
·XML基础入门之架构和语法的实例讲解
·实例详解利用xml创建可分页排序的数...
·实例讲解XML包含中文字符的URL编码问...
·XML数字签名如何签署外部文件的?
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·XML数字签名如何签署外部文件
·实例讲解XML包含中文字符的UR...
·实例详解利用xml创建可分页排
·目前主流的XML编程接口API介...
·XPath语法定义及其使用介绍
·实例分析Xml解析校验引起的依
·要学会使用xmlbeans解析xml
·xml数据岛绑定时的超链接处理
·小解一个简单的XMLSchema的例
·关于xml 空格解释的核心部分...
热 门 文 章
·要学会使用xmlbeans解析xml
·目前主流的XML编程接口API介...
·xml数据岛绑定时的超链接处理...
·关于xml 空格解释的核心部分...
·XPath语法定义及其使用介绍
·实例详解利用xml创建可分页排...
·实例分析Xml解析校验引起的依...
·实例讲解XML包含中文字符的UR...
·XML基础入门之架构和语法的实...
·小解一个简单的XMLSchema的例...
·XML数字签名如何签署外部文件...
·如何利用XSLT将两个XML文件合...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .