您当前的位置:首页 > 计算机论文>计算机应用论文

基于JDOM的XML数据解析技术内涵研究

2015-07-01 16:33 来源:学术参考网 作者:未知
摘 要:jdom是xml文件的一种java表示,它提供了一种表示文件的方法,可以方便有效地阅读、操作和书写文件,并致力于用 20%的精力来解决80%的问题。jdom有一个简单明了的api,既轻量又快速,它集成了dom和sax的优点,将两种技术整合到一起,使两者的配合更加自然和协调。本文着重论述jdom的技术内涵、解析原理,给出了jdom解析xml文件的关键代码,为xml的相关开发设计人员提供了一种更好的参考依据。关键词:jdom; dom; sax; xml; java
  中图分类号:tn011-34; tp312 文献标识码:a
  文章编号:1004-373x(2010)22-0040-02
  
  xml data analysis technique based on jdom
  liu yu-xiao1, yang ya-juan2
  (1. xiangfan university, xiangfan 441001, china; 2. northwest civil aviation air traffic management bureau, xi’an 710082, china)
  abstract: jdom is a kind of java in xml document, which provided a way to express document in order to read,operate and write conveniently. jdom has a simple api, which is slight and fast. api collected the merits of dom and sax so that both can work in a coordinate and natural way. the technical and the analysis principle of jdom, and the key code about xml document are analyzed. a better reference is provided for the xml related development designers.keywords:jdom; dom; sax; xml; java
  
  0 引 言
  jdom是一个开源项目,它基于树型结构,利用纯java技术对xml文档实现解析、生成、序列化以及多种操作。WWw.133229.coMjdom 直接为java编程服务,它利用更为强有力的java语言的诸多特性(方法重载、集合概念以及映射),把sax和dom的功能有效地结合起来[1],在使用设计上尽可能地隐藏原来使用xml过程中的复杂性。利用jdom处理xml文档将是一件轻松、简单的事。
  1 jdom的解析原理
  jdom自身并没有xml解析器,其解析xml文件时,通过sax解析器读取事件流,根据这些事件来建立jdom树[2]。同时,可以对解析器设置各种属性,包括errorhandler,dtdhandler,entityresolver和基础sax xmlreader支持的任何自定义特性和属性。与dom不同的是,树中所有不同类型的节点都表示为具体类,而不表示为接口[3]。
  jdom没有专门导航xml树型结构的方法,其导航树型结构通过element类的getchildren()方法[4]。这种方法返回一个元素列表,包括一个元素的所有内容(说明、处理指令、文本接点和元素内容)[5]。要进行深度搜索,就要对当前元素的子元素应用getchildren()方法。
  jdom把不同的节点类型表示为10个具体类[6]。使用jdom可以很方便地生成一个xml文件,相比dom来说,其代码可以得到很大的简化[7]。但是,在导航xml树型结构时,又比dom复杂得多[8]。jdom处理xml文件的流程见图1。
  图1 jdom处理xml流程
  jdom解析xml文件的时序图见图2。
  图2 jdom解析xml文件时序图
  2 jdom解析xml文件的关键代码
  jdom解析xml文件的关键代码如下:
  import java.io.*;
  import java.util.*;
  import org.jdom.*;
  import org.jdom.input.*;
  public class jdomreader {
  public static void main(string args[ ]) {
  try {
   saxbuilder builder = new saxbuilder();
  document doc = builder.build(new file("xxx.xml"));
  element foo = doc.getrootelement();
  list allchildren = foo.getchildren();
  for(int i=0;i  sytem.out.println(((element)allchildren.get(i)).
  getchild().getattribute());
  sytem.out.println(((element)allchildren.get(i)).
  getchild().gettext());
  }
  }
  catch (exception e) {
  e.printstacktrace();
  }
  }
  }

3 结 语
  jdom与dom主要有两方面不同。首先,jdom仅使用具体类而不使用接口,这在某些方面简化了api,但是也限制了灵活性;其次,api大量使用了collections类,简化了那些已经熟悉这些类的java开发者的使用[9]。
   编辑整理
  参考文献
  [1]哈罗德.java 语言与xml处理教程:sax,dom,jdom,jaxp与trax指南[m].北京:电子工业出版社,2003.
  [2]w3c. w3c document object model (dom)[r/ol].[2005-11-07].http://xml.coverpages.org/dom.html.
  [3]jdom. jdom v1.0 api specification[r/ol].[2005-06-17]./docs/apidocs/.
  [4]saxproject. sax 2.0 extensions[r/ol].[2005-06-07]./about.html.
  [5]biggs wes, evans harry. simplify xml programming with jdom[j/ol].[2005-06-18]./ developerworks/library/j-jdom/index.htm.
  [6]hunter jason. jdom and xml parsing[j/ol]. part 1.[2005-06-23]./technology/oramag/oracle/ 02-sep/o52jdom.html.
  [7]mertz david. xml matters: the xom java xml api[j/ol].[2005-07-01]./developerworks/ library/ x-matters32.html.
  [8]dom4j. xml api for java comparison[eb/ol].[2005-07-07]./compare.html.
  [9]sosnoski dennis m. java中的xml: 文档模型,第一部分:性能[j/ol]. [2005-07-09]./ developerworks/cn/xml/x-injava.
相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页