




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章XML开发 作为下一代Web应用的数据传输和交互工具 XML有着非常广泛的应用范围 在解析 操作XML文档方面 目前已经有DOM SAX等一些相关规范 Java语言也提供了丰富的API接口来支持对XML文档的各种处理 本章将针对这些知识点进行讲解 11 1什么是XML XML是ExtensibleMarkupLanguage 可扩展标识语言 的简写 目前推荐遵循的是W3C组织于2000年10月6日发布的XML1 0版本 XML类似于超文本标记语言 HTML 但HTML只从如何显示以及如何相互作用的方面来描述网页的内容 而XML则从数据角度描述网页内容 下面分别从特点及语法两个方面来介绍XML 11 1 1XML的优势 同HTML一样 XML同样来源于SGML 不过 XML更是一种能定义其他语言的语言 XML最初设计的目的是弥补HTML的不足 以强大的扩展性满足网络信息发布的需要 后来逐渐用于网络数据的转换和描述 XML有如下一些特点 内容与形式分离 HTML文档中显示的数据和显示数据的格式标记是融合在一起的 不包含数据的架构 Schema 信息 HTML是将数据的语义剥离出来 通过显示的标记进行显示而已 XML文档包含了数据的架构 这些架构信息 自己定义的标记 对于数据的描述 检索和处理有巨大的意义 简单易学 XML是精简的SGML 它只有SGML约20 的复杂性 却具有SGML约80 的功能 XML比完整的SGML简单得多 易学 易用并且易实现 可扩展 XML继承了SGML的易扩展的特性 XML中允许开发人员根据需要自行定义标记 这些标记还可以是中文的 XML的标记数目众多 某些团体或者某些行业会自行制订一些规范的XML标记来推广使用 可移植 XML语言可以定义各种数据 如文本 图像 声音等格式都可以采用XML来表述 11 1 2XML的构成 XML文档使用的是自描述和简单的语法 一个XML文档最基本的构成包括声明 处理指令 可选 和元素等 由于本章的重点在于介绍使用Java语言操作XML文档 所以下面仅结合该示例文档对XML语法做一下简要介绍 详细内容请参考其他相关书籍 1 XML声明 XML声明是处理指令的一种 在文件中是可选内容 可加可不加 XML声明中要求必须包括version属性 该属性指明所采用的XML的版本号 XML声明还包括两个可选属性 分别是standalone和encoding 其中 standalone属性用于指定该XML文档是否和一个独立的文档类型定义DTD配套使用 encoding属性用于指定文档所采用的编码标准 下面是上述示例文档中的XML声明 该XML声明中指定版本号为 1 0 编码标准为 GB2312 2 XML元素 XML元素由起始标记 结束标记以及标记之间的数据内容组成 多个元素可以嵌套使用 XML元素的语法格式如下所示 其中 标记是必不可少的 而且要求起始标记和结束标记必须成对出现 另外 XML文档中的标记是区分大小写的 每个标记可以包含任意多个属性 在上述示例文档中 如下都是XML元素的定义 数据内容 3 属性 XML元素中的标记可以包含任意多个属性 标记属性均是 名称 取值 对的形式 名称与取值之间用等号 连接 上述示例文档中定义的属性如下所示 其中 bn为book标记的属性 属性值为 001 4 XML注释 在XML中 注释的方法与HTML完全相同 用 包含注释的内容 示例文档中的注释如下所示 以上介绍的是XML语法中的最基本内容 从下面章节开始 将重点介绍如何使用Java语言操作XML文档 11 2DOM文档对象模型 DOM是由W3C官方制定的表示XML文档的标准 与具体的浏览器 平台 语言无关 Sun公司提供的JavaAPIforXMLParsing 简称JAXP 接口可以使用DOM来处理XML文件 下面就从这两个方面分别进行详细介绍 11 2 1DOM技术构成 DOM是DocumentObjectModel文档对象模型的缩写 是以层次结构组织的节点或信息片段的集合 这个层次结构允许开发人员在树中导航寻找特定信息 分析该结构通常需要加载整个文档和构造层次结构 然后才能开始做其他工作 使用DOM时 数据以树状结构的形式被加载到内存中 如下是一个示例XML文档使用DOM加载后的结构形式 其中 矩形框表示元素节点 椭圆表示文本节点 DOM使用父子关系 在这个例子中 student是具有五个孩子的根元素 三个文本节点 空白 以及两个元素节点name和sex 1 Document接口 Document接口是对XML文档中的数据进行访问和操作的入口 该接口表示整个XML文档 其中的Document节点对应着DOM树中的根节点 通过Document节点 可以访问XML文档的元素 处理指令 注释 文档类型等其他节点 2 Node接口 Node接口表示树中的一个节点 DOM树中包含的很多不同类型的节点均是从Node继承过来的 如Element Attr等 Node接口中定义了所有不同类型的节点中共有的属性与方法 3 NodeList接口 NodeList接口表示一组有顺序关系的节点集合 该节点集合是动态变化的 DOM文档中节点对象的改变会直接反映到对应的NodeList节点集合中 NodeList中的每个item都可以通过一个索引来访问 该索引值从0开始 4 NamedNodeMap接口 NamedNodeMap接口同样表示一组节点集合 只不过该集合中的节点是没有顺序关系的 NamedNodeMap接口中的节点以 节点名 节点对象 的Map形式进行组织 可以通过节点名称进行访问 11 2 2在Java中使用DOM 在Java语言中提供了JAXP接口可以使用DOM来处理XML文件 在javax xml parser包中定义了DocumentBuilderFactory和DocumentBuilder类可以对XML文档进行解析 将其转换为DOM文档 下面详细介绍一下这两个类 1 DocumentBuilderFactory类 DocumentBuilderFactory类为DocumentBuilder工厂类 用来生成DocumentBuilder实例 DocumentBuilderFactory类没有提供公开的构造方法 只提供了如下两种静态方法来获得自身的实例 staticDocumentBuilderFactoryDocumentBuilderFactory newInstance 该静态方法不需要参数 用于获取DocumentBuilderFactory的新实例 staticDocumentBuilderFactoryDocumentBuilderFactory newInstance StringfactoryClass Name ClassLoaderclassLoader 该静态方法从指定类名中获取新的DocumentBuilderFactory实例 2 DocumentBuilder类 DocumentBuilder类用来获取DOM文档实例 DocumentBuilder类也没有提供公开的构造方法 需要调用DocumentBuilderFactory类的newDocumentBuilder 方法来获得该类实例 另外 DocumentBuilder类还提供了许多处理DOM文档的相关方法 如下所示 abstractDOMImplementationgetDOMImplementation 获取DOMImplementation对象的一个实例 SchemagetSchema 获取由XML处理器使用的Schema的引用 abstractbooleanisNamespaceAware 指示此解析器是否被配置为可识别名称空间 abstractbooleanisValidating 指示此解析器是否被配置为验证XML文档 booleanisXIncludeAware 获取此解析器的XInclude处理模式 abstractDocumentnewDocument 获取DOMDocument对象的一个新实例来生成一个DOM树 通过使用javax xml parser包中的相关类 并结合W3C定义的DOM规范中的相关接口便可以实现采用Java语言以DOM的方式处理XML文档 下面是一个具体的应用实例 11 3SAX SAX是非W3C官方提出的 民间 事实标准 是一种轻量型的处理XML文档的技术 Sun公司提供的JavaAPIforXMLParsing 简称JAXP 接口同样可以使用SAX来处理XML文件 下面就从这两个方面分别进行详细介绍 11 3 1SAX技术构成 SAX是SimpleAPIforXML的缩写 与DOM比较而言 SAX是一种轻量型的XML文档处理技术 DOM方法在解析XML文档时读取整个文件并将该文件存储在一个树结构中 如果文档很大 就会要求有极大的内存 相比DOM SAX是读取和操作XML数据更快速 更轻量的方法 SAX允许在读取文档时处理它 从而不必等待整个文档被存储之后才采取操作 它不涉及DOM所必需的开销和概念跳跃 SAX有如下一些特点 1 事件驱动 SAX是事件驱动的 当解析器发现元素开始 元素结束 文本 文档的开始或结束等标签时 发送事件 程序员编写响应这些事件的代码 处理数据 2 不创建对象 SAX解析器根本不创建任何对象 它只是将事件传递给应用程序 如果希望基于那些事件来创建对象 这将由程序员来完成 SAX也为XML文档的解析定义了一组API接口 具体解析时 当解析器发现元素开始 元素结束 文本 文档的开始或结束等标签时 发送事件触发DefaultHandler类中的指定方法进行处理 DefaultHandler类包含的主要方法如下所示 voidcharacters char ch intstart intlength 接收元素中字符数据的通知 voidendDocument 接收文档结束的通知 voidendElement Stringuri StringlocalName StringqName 接收元素结束的通知 voidendPrefixMapping Stringprefix 接收名称空间映射结束的通知 voiderror SAXParseExceptione 接收可恢复的解析器错误的通知 voidfatalError SAXParseExceptione 报告严重的XML解析错误 voidignorableWhitespace char ch intstart intlength 接收元素内容中可忽略空白的通知 11 3 2在Java中使用SAX 在Java语言中提供了JAXP接口可以使用SAX来处理XML文件 javax xml parser包中定义了SAXParserFactory和SAXParser类可以对XML文档进行解析 下面详细介绍一下这两个类 1 SAXParserFactory类 SAXParserFactory类为SAXParser工厂类 用来生成SAXParser实例 SAXParserFactory类没有提供公开的构造方法 只提供了如下两种静态方法来获得自身的实例 staticSAXParserFactorySAXParserFactory newInstance 该静态方法不需要参数 用于获取SAXParserFactory的新实例 staticSAXParserFactorySAXParserFactory newInstance StringfactoryClassName ClassLoaderclassLoader 该静态方法从指定类名中获取新的SAXParserFactory实例 2 SAXParser类 SAXParser类定义了包装XMLReader实现类的API SAXParser类也没有提供公开的构造方法 需要调用SAXParserFactory类的newSAXParser 方法来获得该类实例 另外 SAXParser类还提供了许多处理文档的相关方法 如下所示 abstractParsergetParser 返回由此类实现封装的SAX解析器 abstractObjectgetProperty Stringname 返回XMLReader的基础实现中请求的特定属性 SchemagetSchema 获取对XML处理器使用的Schema引用 abstractXMLReadergetXMLReader 返回由此类实现封装的XMLReader abstractbooleanisNamespaceAware 指示此解析器是否被配置为可识别名称空间 abstractbooleanisValidating 指示此解析器是否被配置为验证XML文档 booleanisXIncludeAware 获取此解析器的XInclude处理模式 voidparse Filef DefaultHandlerdh 使用指定的DefaultHandler将指定文件的内容解析为XML voidparse Filef HandlerBasehb 使用指定的HandlerBase将指定文件的内容解析为XML voidparse InputSourceis DefaultHandlerdh 使用指定的DefaultHandler将给定InputSource内容解析为XML 11 4JDOM JDOM是一种轻量级的使用Java语言处理XML文档的技术 JDOM遵循DOM的主要接口规则 除去了DOM中为了兼容各语言而与Java习惯的不同 下面就对JDOM从概述和具体使用两个方面进行详细介绍 11 4 1JDOM技术构成 作为W3C的官方标准规范 DOM适合于当今流行的各种语言 包括C C Java JavaScript VB VBScript Perl等 为了适应这些不同的编程语言 DOM保留了许多非常相似的API 这样 对于单纯使用Java语言的编程者来说 使用DOM处理XML文档就变得有些不习惯 JDOM正是一组专为Java编程者打造的处理XML文档的工具包 JDOM是一个开源项目 目前 JDOM最新的版本为1 1 JDOM的zip文件可以在http www jdom org网址下载得到 zip文件解压后在build文件夹下面有个jdom jar文件 即是JDOM的类包 JDOM主要由以下几个包组成 org jdom 包含了所有的XML文档要素的Java类 org jdom adapters 包含了与DOM适配的Java类 org jdom filter 包含了XML文档的过滤器类 org jdom input 包含了读取XML文档的类 org jdom output 包含了写入XML文档的类 org jdom transform 包含了将jdom xml文档接口转换为其他XML文档接口的类 org jdom xpath 包含了对XML文档xpath操作的类 11 4 1JDOM技术构成 下面对这些包中的一些主要类作一下简单介绍 1 org jdom包中包含了所有XML文档要素的Java类 其中包括如下一些类 Attribute 用于描述XML文档中的属性 Coment 用于描述XML文档中的注释 DocType 用于描述XML文档类型 Document 用于描述整个XML文档 Element 用于描述XML文档中的元素 2 org jdom input包中定义的输入类主要如下 SAXBuilder类 SAXBuilder提供了一种由任意面向字节的数据源来创建文档的简单机制 它采用SAX解析器读取流 并根据SAX解析器的回调建立文档 DOMBuilder类 DOMBuilder由DOM树构建 如果预先已经有了一个DOM树 并希望用JDOM版本的树来代替 那么采用DOMBuilder是非常方便的 3 org jdom output包中定义的输出类主要如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届江西省抚州市南城县第一中学化学高二上期末达标检测模拟试题含答案
- 2026届广东省吴川一中化学高三第一学期期末教学质量检测试题含解析
- 2025年教师资格证考试(中学科目二)教育知识与能力专项强化训练试卷
- 王道课件邓平速写
- 民法典学习课件
- 玉米趣味农业科普知识培训课件
- 玉石鉴定师知识培训课件
- 2025年国家级科研实验室项目聘用人员服务协议
- 2025新型车库物业管理及设施升级改造合同
- 2025年工艺美术品定制生产合作协议
- VDA6.3-2023版培训教材课件
- 2024年香水香氛品类趋势洞察-天猫美妆
- 骨科植入物在手术中的管理
- 透析中低血压预防及处理
- 《孙子兵法》全文及译文
- 2026年日历表全年表(含农历、周数、节假日及调休-A4纸可直接打印)-
- 《经济法基础》 (第2章) 第二章 会计法律制度
- 病案管理法律法规培训
- 电力系统安全运行与故障预警机制
- 企业员工工会建设计划
- 电信行业网络优化与安全保障措施
评论
0/150
提交评论