




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java解析XML文档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.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是什么内容吧:rjzjhjjjjjj简单的不能再简单了。但是该有的都有了,根元素、属性、子节点。好了,能反应问题就行了,下面来看看解析这个XML文件的Java代码吧!1 public class DomParse 2public DomParse()3DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();4try 5DocumentBuilder dombuilder=domfac.newDocumentBuilder();6InputStream is=new FileInputStream(bin/library.xml);7Document doc=dombuilder.parse(is);89Element 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).getNodeValue();16System.out.println(email);17for(Node node=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);23System.out.println(name1);2425if(node.getNodeName().equals(price)26String price=node.getFirstChild().getNodeValue();27System.out.println(price);28293031323334 catch (ParserConfigurationException e) 35e.printStackTrace();36 catch (FileNotFoundException e) 37e.printStackTrace();38 catch (SAXException e) 39e.printStackTrace();40 catch (IOException e) 41e.printStackTrace();424344public static void main(String args) 45new DomParse();4647 四、代码解释先看看这个程序引用类:import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.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;上面那么简单的代码一看就明白了,但是为了介绍个DOM编程的大概还是来看看这个程序吧:(1)得到DOM解析器的工厂实例DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();得到javax.xml.parsers.DocumentBuilderFactory;类的实例就是我们要的解析器工厂(2)从DOM工厂获得DOM解析器DocumentBuilder dombuilder=domfac.newDocumentBuilder();通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法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.getDocumentElement();在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();System.out.println(email);注意,节点的?粜砸彩撬淖咏诘恪慕诘憷嘈鸵彩荖ode.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().getNodeValue();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();才是真正的值,这是因为DOM把rjzjh也当作是两层结构的节点,其父节点Java解析XML文档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.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是什么内容吧:rjzjhjjjjjj简单的不能再简单了。但是该有的都有了,根元素、属性、子节点。好了,能反应问题就行了,下面来看看解析这个XML文件的Java代码吧!1 public class DomParse 2 public DomParse()3DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();4try 5 DocumentBuilder dombuilder=domfac.newDocumentBuilder();6 InputStream is=new FileInputStream(bin/library.xml);7 Document doc=dombuilder.parse(is);89 Element root=doc.getDocumentElement();10NodeList books=root.getChildNodes();11if(books!=null)12 for(int i=0;i13Node book=books.item(i);14if(book.getNodeType()=Node.ELEMENT_NODE)15String email=book.getAttributes()。getNamedItem(email)。getNodeValue();16 System.out.println(email);17for(Node node=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);23System.out.println(name1);24 25 if(node.getNodeName()。equals(price)26String price=node.getFirstChild()。getNodeValue();27System.out.println(price);28 2930 3132 3334 catch (ParserConfigurationException e) 35e.printStackTrace();36 catch (FileNotFoundException e) 37e.printStackTrace();38 catch (SAXException e) 39e.printStackTrace();40 catch (IOException e) 41e.printStackTrace();42 4344public static void main(String args) 45 new DomParse();4647 四、代码解释先看看这个程序引用类:import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.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;上面那么简单的代码一看就明白了,但是为了介绍个DOM编程的大概还是来看看这个程序吧:(1)得到DOM解析器的工厂实例DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();得到javax.xml.parsers.DocumentBuilderFactory;类的实例就是我们要的解析器工厂(2)从DOM工厂获得DOM解析器DocumentBuilder dombuilder=domfac.newDocumentBuilder();通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法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.getDocumentElement();在DOM中只有根节点是一个org.w3c.dom.Element对象。(6)得到节点的子节点NodeListbooks=root.getChildNodes();for(int i=0;iNode book=books.item(i);这是用一个org.w3c.dom.NodeList接口来存放它所有子节点的,还有一种轮循子节点的方法,后面有介绍(7)取得节点的属性值String email=book.getAttributes()。getNamedItem(email)。getNodeValue();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=no
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医生主任年度工作总结汇编15篇
- 2025年湖南师范大学附属小学第二轮非事业编制教师招聘模拟试卷含答案详解
- 2025年山西焦煤集团所属煤炭子公司井下操作技能人员招聘模拟试卷及参考答案详解1套
- 2025年福建省泉州市晋江市首峰中学招聘1人模拟试卷及一套参考答案详解
- 妇幼保健院医生爱岗敬业演讲稿3篇
- 2025年高一上学期语文第一次月考试卷含答案
- 2025年烟台市卫生健康委员会所属事业单位卫生类岗位公开招聘工作人员(385人)考前自测高频考点模拟试题附答案详解
- 2025年社区康复医疗服务体系建设与运营实践报告
- 2025年甘肃省陇南事业单位招聘在哪查看考前自测高频考点模拟试题及一套答案详解
- 2025年城东区面向社会公开招聘公共服务岗位聘用人员模拟试卷附答案详解(完整版)
- 零星维修工程施工组织设计方案方案
- 2025年汽车驾驶员(技师)考试试题及答案(含答案)
- 2025大连国际机场招聘25人笔试历年参考题库附带答案详解
- 2025年浙江铁塔招聘笔试备考题库(带答案详解)
- 2025年上海市(秋季)高考语文真题详解
- 《秘书文档管理第三版》课件第七章
- 电力工程电缆设计课件
- 施工班组驻地管理制度
- 城投公司成本控制管理制度
- 中国磷化工行业市场规模及发展前景研究报告(智研咨询)
- 万亨工业科技(台州)股份有限公司年产500万套逆变器及配件、800万套新能源汽车控制器配件技改项目环评报告
评论
0/150
提交评论