JAVA中用DOM解析XML的经典入门级文档_第1页
JAVA中用DOM解析XML的经典入门级文档_第2页
JAVA中用DOM解析XML的经典入门级文档_第3页
JAVA中用DOM解析XML的经典入门级文档_第4页
JAVA中用DOM解析XML的经典入门级文档_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java 中用 dom 解析 xml 的经典入门级文档前言用 Java 解析 XML 文档,最常用的有两种方法:使用基于事件的 XML 简单 API(Simple API for XML)称为 SAX 和基于树和节点的文档对象模型(Document Object Module)称为 DOM。Sun 公司提供了 Java API for XML Parsing(JAXP)接口来使用 SAX 和DOM,通过 JAXP,我们可以使用任何与 JAXP 兼容的 XML 解析器。 JAXP 接口包含了三个包:(1)org.w3c.domW3C 推荐的用于 XML 标准规划文档对象模型的接口。(2)org.

2、xml.sax用于对 XML 进行语法分析的事件驱动的 XML 简单 API(SAX)(3)javax.xml.parsers 解析器工厂工具,程序员获得并配置特殊的特殊语法分析器。二、前提DOM 编程不要其它的依赖包,因为 JDK 里自带的 JDK 里含有的上面提到的 org.w3c.dom、org.xml.sax 和 javax.xml.parsers 包就可以满意条件了。三、使用 DOM 解析 XML 文档我们现在来看看 DOM 是如何解析 XML 的吧!同样的,我将从一个简单的不能再简单的例子来说明 DOM 是如何解析 XML 文档的,先让我们看看 XML 是什么内容吧:rjzjhjj

3、jjjj简单的不能再简单了。但是该有的都有了,根元素、属性、子节点。好了,能反应问题就行了,下面来看看解析这个 XML 文件的 Java 代码吧!1 public class DomParse 2 public DomParse()3 DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();4 try 5DocumentBuilder dombuilder=domfac.newDocumentBuilder();6InputStream is=new FileInputStream(bin/library.xml);

4、7Document doc=dombuilder.parse(is);9Element root=doc.getDocumentElement();10NodeList books=root.getChildNodes();11if(books!=null)12for(int i=0;ibooks.getLength();i+)13Node book=books.item(i);14if(book.getNodeType()=Node.ELEMENT_NODE)15String email=book.getAttributes().getNamedItem(email).getNodeValu

5、e();16System.out.println(email);17for(Nodenode=book.getFirstChild();node!=null;node=node.getNextSibling()18if(node.getNodeType()=Node.ELEMENT_NODE)19if(node.getNodeName().equals(name)20String name=node.getNodeValue();21String name1=node.getFirstChild().getNodeValue();22System.out.println(name);23Sys

6、tem.out.println(name1);2425if(node.getNodeName().equals(price)26String price=node.getFirstChild().getNodeValue();27System.out.println(price);282930313233 34 catch (ParserConfigurationException e) 35 e.printStackTrace();36 catch (FileNotFoundException e) 37 e.printStackTrace();38 catch (SAXException

7、e) 39 e.printStackTrace();40 catch (IOException e) 41 e.printStackTrace();42 43 44 public static void main(String args) 45 new DomParse();46 47 四、代码解释先看看这个程序引用类:import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.

8、parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;/下面主要是 org.xml.sax 包的类import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;上面那么简单的代码一看就明

9、白了,但是为了介绍个 DOM 编程的大概还是来看看这个程序吧:(1)得到 DOM 解析器的工厂实例DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();得到 javax.xml.parsers.DocumentBuilderFactory;类的实例就是我们要的解析器工厂(2)从 DOM 工厂获得 DOM 解析器DocumentBuilder dombuilder=domfac.newDocumentBuilder();通过 javax.xml.parsers.DocumentBuilderFactory 实例的静态

10、方法 newDocumentBuilder()得到 DOM 解析器(3)把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它InputStream is=new FileInputStream(bin/library.xml);InputStream 是一个接口。(4)解析 XML 文档的输入流,得到一个 DocumentDocument doc=dombuilder.parse(is);由 XML 文档的输入流得到一个 org.w3c.dom.Document 对象,以后的处理都是对 Document 对象进行的(5)得到 XML 文档的根节点Element root=doc.g

11、etDocumentElement();在 DOM 中只有根节点是一个 org.w3c.dom.Element 对象。(6)得到节点的子节点NodeListbooks=root.getChildNodes();for(int i=0;ibooks.getLength();i+)Node book=books.item(i);这是用一个 org.w3c.dom.NodeList 接口来存放它所有子节点的,还有一种轮循子节点的方法,后面有介绍(7)取得节点的属性值String email=book.getAttributes().getNamedItem(email).getNodeValue()

12、;System.out.println(email);注意,节点的属性也是它的子节点。它的节点类型也是 Node.ELEMENT_NODE(8)轮循子节点for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling() if(node.getNodeType()=Node.ELEMENT_NODE)if(node.getNodeName().equals(name)String name=node.getNodeValue();String name1=node.getFirstChild().getNodeVal

13、ue();System.out.println(name);System.out.println(name1);if(node.getNodeName().equals(price)String price=node.getFirstChild().getNodeValue();System.out.println(price);这段代码的打印输出为:nullalterrjzjhjjjjjj从上面可以看出String name=node.getNodeValue();是一个空值。而String name1=node.getFirstChild().getNodeValue(); 才是真正的值,

14、这是因为 DOM 把 rjzjh也当作是两层结构的节点,其父节点为节点本身,且它只有一个子节点(如果有属性的话就不止 一个了!),子节点是它的值“rjzjh”,所以我们看到上面的结果。还有,子节点的节点类型也是 Node.ELEMENT_NODE 型的,node.getNextSibling()方法是取下一个相邻的节点。五、DOM 结点DOM 是一些节点的集合,由于文档中可能包含有不同类型的信息,所以定义了几种不同类型的节点。DOM 中最常见的节点类型有:(1)元素:元素是 XML 的基本构件。元素的子节点可以是其它元素、文本节点或两者都有。元素节点还可以只含有属性这一唯一类型的节点。(2)属

15、性:属性节点包含关于元素节点的信息,但它不是元素的子节点(3)文本:文本节点文本信息,或干脆是空白的文本。(4)文档:文档节点是整个文档中所有其它节点的父节点元素是一种很重要的类型节点,元素节点可以是其他节点的容器。六、DOM 解析 XML 文档的步骤:主要几步见第四点的(1),(2),(3),(4)步骤:本文的相关评价及说明信息:java 中用 dom 解析 xml 的经典入门级文档. Sunday, 20. May 2007, 22:40:34. JAVA. 一、前言 用 Java 解析 Xml 文档,最常用的有两种方法:使用基于事件的 Xml 简单 API(Simple API for

16、Xml)称为 SAX 和基于树和节点的文档对象模型(Document Object Module)称为 DOM .java 中用 dom 解析 xml 的经典入门级文档. 刚刚在做关于解析 XML 的东西,在网上找到的一篇觉得不错的入门级教程,珍藏一下。 一、前言 用 Java 解析 XML 文档,最常用的有两种方法:使用基于事件的 XML 简单 API(Simple API for XML)称为 SAX 和基于树和节点的文档 .java 中用 dom 解析 xml 的经典入门级文档,阿里西西 WEB 开发社区- 国内最大,资源最全,致力于为 WEB 开发工作者服务的专业社区.java 中用

17、dom 解析 xml 的经典入门级文档,JAVA 使用技巧,网络大本营是一个专门发布编程资料,计算机相关技巧的大型网站,收集的资料非常之多,做中国最大的 IT 技术库和编程数据库!把解压后的 jdom.jar 文件加到项目的类路径中,另外便于调试,还要下载它的源代码。 三、使用 JDOM 解析 XML. 好了,现在该是正题了。下面通过一个简单的例子说明一下怎么用 JDOM 这一适合 Java 程序员习惯的工具包来解析 XML 文档。 为了简单,我用了如下 XML 作为要 .JAVA 技术 XML,提供各种 jsp 学习资料,主要分类,JSP 配置,JSP 基础,中文问题,上传问题,JAVABE

18、AN,数据库,数据库连接池,文件操作,图片声音,XML,JSP . JAVA 技术, XML, 使用 JDOM 操作 XML 系列文章二从数据库中读取记录集到平面式 XML 文, 2005-01-19 .java 中用 dom 解析 xml 的经典入门级文档, java 中用 dom 解析 xml 的经典入门级文档. Hashtable 和 HashMap 的区别, Hashtable 和 HashMap 的区别. JAVA 获取随机数, JAVA 获取随机数. JSP 页面刷新的问题, JSP 页面刷新的问题. JSP 中遇到的几个常见问题, JSP 中遇到的几个常 .Import org.w3c.dom. *; /XML 的 DOM 实现. import

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论