解析XML.pptx_第1页
解析XML.pptx_第2页
解析XML.pptx_第3页
解析XML.pptx_第4页
解析XML.pptx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 理论,解析XML,2,课程地位,SEC课程体系,S1:302,CTB,HTML,SQL-Base,STB,Project1:ADO.Net+WinForms C/S,JavaScript,SQL-Adv,Java,S2:372,Project2:JavaWeb+SQL B/S,.NET/C#-Adv,JavaWeb-Base,ASP.Net-Adv,S3:408,ASP.Net-Base,NTC,Project3:,PhotoShop-Base,Photoshop-Adv,Oracle,Data-Struct,.Net-Three-Tier,Enterprise-Project-Des

2、ign(企业级项目开发实训),PHP,JavaWeb-Adv,Linux,SSH,.NET方向,JAVA方向,Linux,3,就业技能,掌握JAVAWeb可重用组件开发动态页面技术 掌握JAVAWeb应用框架开发用技术 掌握Web服务的基础开发技术,4,本门课程任务,学习并掌握JavaWeb高级编程技能。并运用这些技能完成网上书店项目。,5,预习检查,常用的解析XML的API有哪些? DOM JDOM(Java + DOM) DOM4J(Dom For(Four/4) Java) SAX(SimpleAPI For XML) 使用DOM解析技术解析XML文档时,XML文档中的元素、属性、CDA

3、TA段可以用DOM树结构中的什么来代表? 节点 使用DOM解析技术动态生成XML文件时主要使用哪一个对象? Transformer对象,6,本章任务,使用DOM解析技术将给定的examGrade.xml文档进行解析,并输出到控制台上。 使用DOM解析技术根据需要动态生成XML文档。 使用DOM4J解析技术将给定的examGrade.xml文档进行解析,并输出到控制台上。,6,6,6,7,了解XML和JSP技术的结合 掌握使用DOM解析XML文档 掌握DOM动态生成XML文档的方法 了解使用JDOM解析和生成XML文档 了解使用DOM4J解析和生成XML文档,本章目标,XML,HTML,8,XM

4、L和JSP技术的结合,什么是XML? Extend Markup Language(可扩展的标记语言)。 标记语言的发展史: HyperText Markup Language,超文本标记语言 适应性差 太庞大,过于臃肿 数据与表现混杂在一起,标记语言(markup language),用一系列约定好的标记来对电子文档进行标记,以实现对电子文档的语义、结构、及格式的定义。这些标记必须很容易的和内容区分,并且易于识别。,SGML,GML,9,XML和JSP技术的结合,为什么要使用XML? 开放性:XML技术根据标准规范,允许在任何平台上读取和处理数据 简单性:XML文档是纯文本,可以自由地在两个

5、不同系统之间交换数据 自我描述性:XML可以明确地表示数据模型中各个部分的意义 结构和内容分离: XML中数据的显示和数据本身时区分开的 可扩展性:使用XML可以按照自己的需要定制语言。, 张三 20 ,10,XML和JSP技术的结合,什么时候使用XML? XML的应用范围非常广泛,但主要用于2个方面: 一、 用于配置文件(JAVA框架、WEB服务器、应用软件等) 二、交换数据(跨语言、跨平台、跨设备、跨数据库),可以将一篇XML看成一个小型的数据库,11,解析XML技术简介,常用的解析XML技术:,DOM,JDOM,DOM4J,SAX,基于树模型,基于事件模型,12,解析XML技术简介,基于

6、树模型和基于事件模型的各自优缺点:,基于树模型,核心是节点,并且理论上关于树的算法很完善, 能够方便获得节点的信息,能够方便在节点之间进行导航。,不管XML文件有多大,都必须一次性将其读取到内存, 然后才能构建树结构。,examGradeList,advanceMath,examineeName,grade,advanceMath,examineeName,grade,基于事件模型,核心是事件驱动,可以按需读取,不必一次性将整个XML 文档读取到内存,所以解析数据的速度快。,使用SAX编码比较困难, 很难同时访问统一文档中的多处不同数据。,DOM4J是JDOM的一个分支,提供了更加易用的API

7、和XPath的支持,JDOM是JAVA语言特定的API,其中主要结构是类,所以编码方便。目前JDOM已经纳入JSR102规范,13,解析XML技术简介,基于树模型解析技术的发展:,DOM完全遵循W3C的DOM规范,体系结构中主要是接口,编码较麻烦。,14,DOM解析XML技术概述,DOM(Document Object Model,文档对象模型)是W3C制定的一套标准接口。它独立于语言和平台,提供了构成DOM的不同对象的定义没有提供特定的实现。使用DOM的对象,开发人员可以对于XML文档进行读取、搜索、修改、添加、删除等操作。,什么是DOM解析技术?,15,DOM解析XML技术API,DOM规

8、范的核心是树结构模型,这个树结构模型包含了XML文档的元素、属性和内容等。 XMl文档中的每个元素、属性、CDATA段等都可以用DOM树结构中的节点来代表。,16,DOM解析XML技术API,Document接口:代表整个XML文档,所有其他的Node都已树形结构的方式有序的包含在其中。可以通过遍历这棵树来得到XML文档的内容。,17,DOM解析XML技术API,Node接口:DOM结构中最为基本的对象,代表了文档树种的一个抽象的节点。在实际使用时很少使用Node这个对象,而是使用它的子类。,18,DOM解析XML技术API,NodeList接口:提供了一个有序节点Node的集合。,19,DO

9、M解析XML技术API,Element接口:Element代表的是XML文档中的标签元素,继承于Node。,如何使用DOM技术解析XMl文档: 一、通过DocumentBuilderFactory抽象类的静态方法newInstance()创建DOM解析器的工厂实例。 二、通过DocumentBuilderFactory实例的方法newDocument()得到DOM解析器。 三、把需要解析的XML文档转化为输入流,以便DOM解析器能够进行解析。 四、解析XML文档的输入流,得到一个Document。 五、通过Document得到XMl文档的根节点。 六、DOM技术采用NodeList存放Node

10、的所有子节点,所以我们可以使用循环的方式得到节点下的所有子节点。 七、取得节点的属性值。,String grade = exam.getAttributes().getNamedItem(“grade”).getNodeValue(); System.out.println(grade);,NodeList exams = root.getChildNodes(); for (int i = 0 ; i exams.getLength() ; i +) Node exam = exams.item(i); ,Element root = doc.getDocumentElement();,20

11、,DOM解析XML的步骤,DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();,DocumentBuilder builder = factory.newDocumentBuilder();,InputStream is = new FileInputStream(“src/examGrade.xml”);,Document doc = builder.parse(is);,21,DOM解析XML,在使用DOM技术解析XMl文档,需要循环取得节点的子节点的内容时可以通过类型判断来进行读取,它的类型是Node

12、.ELEMENT_NODE。,子节点,for (Node node = exam.getFirstChild(); node != null; node = node .getNextSibling() if (node.getNodeType() = Node.ELEMENT_NODE) if (node.getNodeName().equals(examineeName) String stuName = node.getFirstChild().getNodeValue(); System.out.print(stuName + t); if (node.getNodeName().eq

13、uals(grade) String grade = node.getFirstChild().getNodeValue(); System.out.println(grade + t); ,22,使用DOM解析XML技术将给定的examGrade.xml文档进行解析,并将获取内容输出到控制台上。,8分钟时间,DOM解析XML现场编程,根节点,子节点,子节点,23,DOM生成XML,TransformerFactory transformerFactory = TransformerFactory.newInstance();,Transformer transformer = transfo

14、rmerFactory.newTransformer();,DOMSource domSource = new DOMSource(document);,File file = new File(src/newXML.xml); FileOutputStream out = new FileOutputStream(file); StreamResult xmlResult = new StreamResult(out);,transformer.transform(domSource, xmlResult);,使用DOM技术动态生成XML文件: 一、使用TransformerFactory类

15、建立一个TransformerFactory对象。 二、使用工厂实例transformerFactory创建Transformer对象。 三、将根据需要进行变换内容的Document对象封装到DOMSource对象中。 四、准备新文件输出流,将输出流放入StreamResult对象中。 五、使用Transformer实例的transform方法进行转换,将变换的内容映射到新的XML文档中,完成工作。,24,使用DOM解析技术生成新的XML(newXML.xml)文档。,8分钟时间,DOM生成XML现场编程,根节点,根节点的属性,子节点,25,小结 1,DOM技术解析XML文档的步骤是什么? 一

16、、通过DocumentBuilderFactory抽象类的静态方法newInstance()创建DOM解析器的工厂实例。 二、通过DocumentBuilderFactory实例的方法newDocument()得到DOM解析器。 三、把需要解析的XML文档转化为输入流,以便DOM解析器能够进行解析。 四、解析XML文档的输入流,得到一个Document。 五、通过Document得到XMl文档的根节点。 六、DOM技术采用NodeList存放Node的所有子节点,所以我们可以使用循环的方式得到节点下的所有子节点。 七、取得节点的属性值。,DOM技术生成XML文档的步骤是什么? 一、使用Tran

17、sformerFactory类建立一个TransformerFactory对象。 二、使用工厂实例transformerFactory创建Transformer对象。 三、将根据需要进行变换内容的Document对象封装到DOMSource对象中。 四、准备新文件输出流,将输出流放入StreamResult对象中。 五、使用Transformer实例的transform方法进行转换,将变换的内容映射到新的XML文档中,完成工作。,26,什么是JDOM? JDOM是一个开源项目,它基于树形结构,利用纯JAVA对XML文档实现解析、生成、序列化。 使用JDOM的优点: JDOM的目的是成为Java

18、特定文档模型,它简化与XML的交互 并且比使用DOM实现更快。 JDOM提供了更简单的访问XML信息的基础方法。 除了XML文档之外,JDOM还可以访问其他数据源。,JDOM解析XML技术概述,27,JDOM API主要由6个包构成:,JDOM解析XML API,28,Document 类:,JDOM解析XML API,29,Element 类:,JDOM解析XML API,30,如何使用JDOM解析XML文档:,JDOM解析XML的步骤,SAXBuilder builder = new SAXBuilder(); try Document readDoc = builder.build(sr

19、c/examGrade.xml); catch (Exception e) e.printStackTrace(); Element exams = readDoc.getRootElement(); List list = exams.getChildren(advanceMath); for (int i = 0; i list.size(); i+) Element exam = (Element) list.get(i); 信息输出. ,一、实例化一个合适的解析器对象,二、以包含XML数据的文件为参数构建一个文档对象document,三、获得根元素,然后使用JDOM API提供的对与元

20、素、属性等操作方法进行操作,31,如何使用JDOM生成XML文档:,JDOM生成XML的步骤,Element root = new Element(examGradeList); Document doc = new Document(root); . root.addContent(sourceName); Format format = Format.getCompactFormat(); . XMLOutputter XMLout = new XMLOutputter(format); try XMLout.output(doc, new FileOutputStream(src/jdo

21、mNewXml.xml); catch (Exception e) e.printStackTrace(); ,一、创建文件前必须先声明根节点,每个XML文档有且只有一个根节点,二、利用根节点创建XML文档实例Document,三、为根节点添加属性和属性值,四、设置XML文档输出格式,五、调用XMLOutputter的output方法将doc文档内容输出到指定文件中,代码演示,32,使用JDOM解析技术解析XML(newXML.xml)文档。,小结 2,8分钟时间,33,什么是DOM4J? DOM4J是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、

22、XML Schema支持以及用于大文档或流化文档的基于事件的处理。 它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。 DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J.,DOM4J解析XML概述,XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。 XPath 是 W3C XSLT 标准的主要元素,并且 XQue

23、ry 和 XPointer 同时被构建于 XPath 表达之上。,34,DOM4J的使用方式类似于JDOM。,DOM4J解析XML的步骤,File f = new File(src/examGrade.xml); SAXReader reader = new SAXReader(); Document doc; try doc = reader.read(f); Element root = doc.getRootElement(); Element foo; for (Iterator i = root.elementIterator(advanceMath); i.hasNext();)

24、foo = (Element) i.next(); System.out.print(姓名: + foo.elementText(examineeName); System.out.println(t 成绩: + foo.elementText(grade); ,一、实例化一个合适的解析器对象,二、使用解析器读取XML文档获得对象document,三、获得根元素,然后遍历节点,代码演示,35,如何使用JDOM生成XML文档:,DOM4J生成XML的步骤,Document doc = DocumentHelper.createDocument(); Element root = doc.addE

25、lement(examGradeList); Element stuEle = root.addElement(advanceMath); stuEle.addElement(examineeName).addText(张三); stuEle.addElement(grade).addText(89); OutputFormat format = OutputFormat. createCompactFormat(); format.setIndentSize(4); format.setNewlines(true); XMLWriter out = new XMLWriter (new FileOutputStream(src/dom4jNewXML.xml), format); out.write(doc);,一、使用DocumentHelper的createDocument方法获得document对象。,二、向document对象中添加根节点。,三、为根节点添加属性和属性值。,四、设置XML文档输出格式。,五、调用XMLWriter的write方法将doc文档内容输出到指定文件中。,代

温馨提示

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

评论

0/150

提交评论