




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XML 和和 File I/OXML( eXtensible Markup Language,可扩可扩展标记语言)是一种简单的数据存储语言,使展标记语言)是一种简单的数据存储语言,使用一系列简单的标签描述数据用一系列简单的标签描述数据使人们或程序能够理解这些标签使人们或程序能够理解这些标签XML简介2-1SGMLHTML基于文本的格式,允许开发人员描述结构化数据并在各种应用之间发送和交换这些数据有助于在服务器之间传输结构化数据允许通过使用自定义格式,标识、交换和处理数据库可以理解的数据是元语言XMLXMLXML标记语言的层次结构标记语言的层次结构XML简介2-2 中华园中华园 3336767
2、王府井大街王府井大街25号号 北京北京 中国中国 20056 . . . XML 声明声明- 定义定义 XML 版本版本包含数据的包含数据的 XML 标签标签XML和XHTML的区别 XHTML网页示例网页示例 这是一个这是一个XHTML网页!网页! XHTML标签都是标准标签,不允许自定义标签。标签都是标准标签,不允许自定义标签。 XHTML标记标记 YAYA 100 0 酷酷的雪娜瑞酷酷的雪娜瑞 OUOU 90 15 聪明的拉布拉多犬聪明的拉布拉多犬 XML标记标记XHTMLXML标签标签都有固定含义不能去创造新的标签支持自定义标签,具有扩展性作用主要用来显示数据可以通过标签和属性对页面显
3、示进行排版用来存储和交换数据无法描述页面的排版和显示形式创建XML文档XML文档总是以文档总是以XML声明开始声明开始定义了定义了XML的版本和所使用的编码等信息的版本和所使用的编码等信息XML文档的主要部分是元素文档的主要部分是元素元素由开始标签、元素内容和结束标签组成元素由开始标签、元素内容和结束标签组成元素内容可以包含子元素、字符数据等元素内容可以包含子元素、字符数据等XML文档中的注释符号是文档中的注释符号是至少需要一个元素XML 标签区分大小写应正确使用结束标签正确嵌套标签应使用合法标签标记名称的长度应定义有效的属性应验证文档管理元素的规则格式良好和有效的 XML 文档被视为格式良好
4、的被视为格式良好的 XML 文档的条件:文档的条件:该文档满足最低要求集该文档满足最低要求集如果文档不满足任何一个良好格式的要求,则如果文档不满足任何一个良好格式的要求,则将发生致命错误将发生致命错误有效的有效的 XML 文档是符合文档是符合 Document Type Definition(文档类型定义,(文档类型定义,DTD)的规则的格)的规则的格式良好的式良好的 XML 文档文档解析器解析器由解析器解析的 XML 文档在浏览器中查看已解析的文档 带有 XML 文档的编辑器解析器类型非验证解析器验证解析器检查文档格式是否良好使用 DTD 检查文档的有效性使用DTD生成XML文档DTD(Do
5、cument Type Definition文档类型定义文档类型定义)是一种保证是一种保证XML文档格式正确的有效方法文档格式正确的有效方法DTD 以简单文本文件的形式出现,可以存储在独以简单文本文件的形式出现,可以存储在独立的文件中,也可以嵌入立的文件中,也可以嵌入 XML 文档文档引用引用 DTD 的的 XML 文档将包含文档将包含 声明声明验证接收到的数据是否有效 用于验证自己的数据定义 XML 文档的合法构建块使用一系列合法元素来定义文档结构DTD 的结构DTD的结构为:的结构为:!DOCTYPE pets 声明根元素声明根元素pets直接下级元素是直接下级元素是dogs、pengui
6、ns,顺序固定,只能出现一次顺序固定,只能出现一次dogs直接下级元素是直接下级元素是dog,*表示表示dog元素可以出现元素可以出现0到多次到多次penguins直接下级元素是直接下级元素是penguin,+表示表示penguin至少出现一次至少出现一次dog的直接下级元素依次是的直接下级元素依次是name,health,love,strain,?表示,?表示strain元素出现元素出现0次到次到1次次dog元素有元素有id属性,是属性,是CDATA类型,必须出现类型,必须出现元素为元素为 #PCDATA 类型类型XML的优势:的优势:XML的优势XML独立于计算独立于计算机平台机平台可扩展
7、性可扩展性交互性交互性独立于编程独立于编程语言语言独立于操作独立于操作系统系统简单性简单性灵活性灵活性XML的作用数据存储:数据存储:数据库提供了更强有力的数据存储和分析能力数据库提供了更强有力的数据存储和分析能力XML仅仅是存储数据仅仅是存储数据XML与其他数据表现形式最大的不同是它极其简单与其他数据表现形式最大的不同是它极其简单,正是这点使,正是这点使XML与众不同与众不同数据交换:数据交换:由于各个计算机所使用的操作系统、数据库不同,由于各个计算机所使用的操作系统、数据库不同,因此数据之间的交换向来是件头痛的事因此数据之间的交换向来是件头痛的事可以使用可以使用XML来交换数据来交换数据数
8、据配置:数据配置:使用使用XML配制文件可读性强,灵活性高配制文件可读性强,灵活性高使用CSS格式化XML显示效果编写编写CSS样式文件样式文件引入引入CSS文件文件pets display: block; color: red;dog,penguin display: block; margin-left: 40pt;使用使用CSS格式化格式化XML不能代表不能代表XML文档格式化的未来。文档格式化的未来。XSL是首选的是首选的XML样式表语言,远比样式表语言,远比CSS更加完善更加完善演示示例:使用演示示例:使用CSS格式化格式化XML解析XML目前最常用的目前最常用的XML解析技术:解析
9、技术:DOMSAXSun公司提供了公司提供了JAXP (Java API for XML)接口来使用接口来使用DOM和和SAXorg.w3c.dom:W3C推荐的用于使用推荐的用于使用DOM解析解析XML文档的接口文档的接口org.xml.sax:用于使用:用于使用SAX解析解析XML文档的接口文档的接口javax.xml.parsers:解析器工厂工具,程序员获得:解析器工厂工具,程序员获得并配置特殊的特殊语法分析器并配置特殊的特殊语法分析器使用DOM解析XMLDOM是是Document Object Model的缩写,即文的缩写,即文档对象模型档对象模型DOM把把XML文映射成一个倒挂的树
10、文映射成一个倒挂的树使用使用DOM解析解析XML文档的步骤:文档的步骤:创建解析器工厂对象创建解析器工厂对象由解析器工厂对象创建解析器对象由解析器工厂对象创建解析器对象由解析器对象对指定由解析器对象对指定XML文件进行解析,构建相应文件进行解析,构建相应DOM树,创建树,创建Document对象对象以以Document对象为起点对对象为起点对DOM树的节点进行增删改树的节点进行增删改查操作。查操作。这一步是重点,根据具体操作不同而不同这一步是重点,根据具体操作不同而不同DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance
11、();DocumentBuilder db = dbf.newDocumentBuilder();Document doc = db.parse(pet2.xml);演示示例:使用演示示例:使用DOM解析解析XMLDocument对象Document对象代表了整个对象代表了整个XML文档文档所有其它的所有其它的Node都以一定的顺序包含在都以一定的顺序包含在Document对象之内对象之内它也是对它也是对XML文档进行操作的起点文档进行操作的起点Document对象的主要方法有:对象的主要方法有:getElementsByTagName(String):返回一个:返回一个NodeList对象,
12、它包含了所有给定标签名字的标签对象,它包含了所有给定标签名字的标签getDocumentElement():返回一个代表这个:返回一个代表这个DOM树的根节点的树的根节点的Element对象,也就是代表对象,也就是代表XML文档文档根元素的那个对象根元素的那个对象NodeList对象指一个包含了一个或者多个节点(指一个包含了一个或者多个节点(Node)的列表)的列表可以简单的把它看成一个可以简单的把它看成一个Node数组数组可以通过方法来获得列表中元素可以通过方法来获得列表中元素NodeList对象常用的方法有:对象常用的方法有:getLength():返回列表的长度:返回列表的长度item(
13、int):返回指定位置的:返回指定位置的Node对象对象Node对象是是DOM结构中最基本的对象,代表了文档树中的一个抽象结构中最基本的对象,代表了文档树中的一个抽象节点节点实际使用的时候,很少会真正用到实际使用的时候,很少会真正用到Node这个对象这个对象而是用到诸如而是用到诸如Element、Attr、Text等等Node对象的子对象对象的子对象Node对象的主要方法有:对象的主要方法有:方法名说 明getChildNodes()包含此节点的所有子节点的NodeListgetFirstChild()如果节点存在子节点,则返回第一个子节点getLastChild()如果节点存在子节点,返回最
14、后一个子节点getNextSibling()返回在DOM树中这个节点的下一个兄弟节点getPreviousSibling()返回在DOM树中这个节点的上一个兄弟节点getNodeName()根据节点的类型返回节点的名称getNodeValue()返回节点的值getNodeType()返回节点的类型Element对象代表代表XML文档中的标签元素,继承自文档中的标签元素,继承自Node是是Node最主要的子对象最主要的子对象Element对象中存取其属性的方法:对象中存取其属性的方法:getAttribute(String):返回标签中给定属性名称的:返回标签中给定属性名称的属性的值属性的值ge
15、tElementsByTagName(String):返回具有给定:返回具有给定标记名称的所有后代标记名称的所有后代 Elements 的的 NodeList使用SAX解析XMLSAX(Simple API for XML)是另一种常用的)是另一种常用的XML解析技术解析技术SAX解析器不像解析器不像DOM那样建立一个完整的文档那样建立一个完整的文档树,而是在读取文档时激活一系列事件树,而是在读取文档时激活一系列事件这些事件被推给事件处理器,然后由事件处理这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问器提供对文档内容的访问与与DOM相比,相比,SAX的优点如下:的优点如下:内存
16、消耗小内存消耗小无需为所有节点创建对象无需为所有节点创建对象指导1根据DTD定义编写XML文档训练要点:训练要点:XML定义定义使用使用DTD定义定义XML文档结构文档结构根据根据DTD正确编写正确编写XML文档文档实现思路:实现思路:创建创建Java项目项目TestXML根据需求提供的内容创建并编写外部根据需求提供的内容创建并编写外部DTD文件文件pet.dtd根据根据pet.dtd文件创建并编写文件创建并编写XML文件文件pet.config关键代码:关键代码: 100 0 18 10 100 0 15 8 完成用时:完成用时:15分钟分钟指导2使用DOM解析XML文档训练要点:训练要点:
17、使用使用DOM解析解析XML文档的基本步骤文档的基本步骤JDK中中DOM的主要接口及方法的使用的主要接口及方法的使用实现思路:实现思路:在在Java项目项目TestXML下创建类下创建类TestDOM,包含,包含main方法方法在在main方法中编写代码,使用方法中编写代码,使用DOM解析解析XML文档文档pet.config关键代码:关键代码:System.out.println(XML文件中狗狗的初始化信息:文件中狗狗的初始化信息:);for (int i = 0; i petList.getLength(); i+) Node pet = petList.item(i); for (No
18、de node = pet.getFirstChild(); node != null; node = node.getNextSibling() if (node.getNodeType() = Node.ELEMENT_NODE) String name = node.getNodeName(); String value = node.getFirstChild().getNodeValue(); System.out.println(name + : + value + t); 完成用时:完成用时:20分钟分钟读写文件2-1格式模版保存在文本文件格式模版保存在文本文件pet.templ
19、ate中,内中,内容如下:容如下:您好!您好!我的名字是我的名字是name,我是一只,我是一只type。我的主人是我的主人是master。其中其中name、type、master是需要替换的是需要替换的内容,现在要求按照模板格式保存宠物数据到内容,现在要求按照模板格式保存宠物数据到文本文件,即把文本文件,即把name、type、master替替换为具体的宠物信息,该如何实现呢?换为具体的宠物信息,该如何实现呢?读写文件2-2可以把该问题分解为:可以把该问题分解为:1、如何从文件中读取模版?(使用、如何从文件中读取模版?(使用Reader接口实现)接口实现)2、如何替换模版中的内容为当前宠物信息
20、?(使用、如何替换模版中的内容为当前宠物信息?(使用String的的replace()方法实现)方法实现)3、如何将文本保存到文件?(使用、如何将文本保存到文件?(使用Writer接口实现)接口实现)以上三个子问题中,涉及到了文件的输入输出操作以上三个子问题中,涉及到了文件的输入输出操作使用Reader读取文件内容2-1Java中,文件的输入输出功能通过流来实现中,文件的输入输出功能通过流来实现流流(stream)可以理解为一组有顺序的、有起点可以理解为一组有顺序的、有起点和终点的动态数据集合和终点的动态数据集合流按照处理数据的单位可分为两种流按照处理数据的单位可分为两种字节流字节流字符流字符
21、流文件输入输出的原理:文件输入输出的原理:使用Reader读取文件内容2-2所有字符输入流类都是抽象类所有字符输入流类都是抽象类Reader的子类的子类Reader的主要方法有:的主要方法有:int read() 从源中读取一个字符的数据,返回字符值从源中读取一个字符的数据,返回字符值int read(char b) 从源中试图读取从源中试图读取b.length个字符个字符到到b中,返回实际读取的字符数目中,返回实际读取的字符数目void close() 关闭输入流关闭输入流Reader读取文件的步骤:读取文件的步骤:创建字符输入流对象,负责读取文件创建字符输入流对象,负责读取文件创建中转站数
22、组,存放读取的内容创建中转站数组,存放读取的内容读取文件内容到数组读取文件内容到数组输出保存在数组中的文件内容输出保存在数组中的文件内容关闭输入流关闭输入流指导3读取模板文件内容并输出训练要点:训练要点:理解输入流和输入流类的概念理解输入流和输入流类的概念使用使用Reader实现文件读取实现文件读取需求说明:需求说明:模板文件模板文件pet.template位于位于C盘根目录下,要求读取盘根目录下,要求读取模板文件的内容,在读取完成后一次性输出全部内容模板文件的内容,在读取完成后一次性输出全部内容参考解决方案:参考解决方案:/ 1、创建字符输入流对象,负责读取、创建字符输入流对象,负责读取c:
23、/ pet.template文件文件Reader fr = new FileReader(c:/ pet.template);/ 2、创建中转站数组,存放每次读取的内容、创建中转站数组,存放每次读取的内容char ch = new char1024;/ 3、通过循环实现文件读取,把全部内容放入、通过循环实现文件读取,把全部内容放入StringBufferStringBuffer sb = new StringBuffer();int length = fr.read(ch);while (length != -1) sb.append(ch);length = fr.read(ch);完成用时
24、:完成用时:20分钟分钟指导4替换模板文件中占位符训练要点:训练要点:String类类replace(String target, String replacement)方法的使用方法的使用参考解决方案:参考解决方案:String str = 您好!我的名字是您好!我的名字是name,我是一只,我是一只type。我。我的主人是的主人是master。;System.out.println(替换前:替换前:+ str);str = str.replace(name, 欧欧欧欧);str = str.replace(type, 狗狗狗狗);str = str.replace(master, 李伟李伟);Sys
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省安全生产月题库及答案解析
- 特变级安全教育考试题库及答案解析
- 2025年打捞工具行业研究报告及未来行业发展趋势预测
- 玻璃厂财务审计管理制度
- 2025年多功能光波导调制器行业研究报告及未来行业发展趋势预测
- 2025年低压成套设备行业研究报告及未来行业发展趋势预测
- 2025年防螨寝具行业研究报告及未来行业发展趋势预测
- 家具配件厂职业健康检查跟踪实施细则
- 家具配件厂采购谈判管理办法
- 橡胶厂保密管理制度
- 煤仓作业规程
- 高大模板支撑体系安全检查验收表
- 测金属电阻率实验报告
- 政治经济学完整全套教学课件
- 养老护理员培训排泄照料
- 计算机应用基础(windows7-office2010)
- 融资方案报告范文模板
- 肾脏肿瘤影像学诊断策略
- 仓库定期检查表范例仓库管理工作检查项目与评分标准
- 化疗前的准备和评估
- 显微外科设备器械及显微外科基本技术培训教材培训课件
评论
0/150
提交评论