目标 在这一课里,你将学习: 确定XML 文档对象模型(DOM)的需求 使用以下的XML DOM对象访问XML文档的不同部分:

Slides:



Advertisements
Similar presentations

Advertisements

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
冀教版四年级数学上册 本节课我们主要来学习 2 、 3 、 5 的倍数特征,同学们要注意观察 和总结规律,掌握 2 、 3 、 5 的倍 数分别有什么特点,并且能够按 要求找出符合条件的数。
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
15 精通DOM文档对象模型 JavaScript是一种基于对象的脚本语言,而不是面向对象的编程语言。早期的JavaScript根据浏览器和网页文档包含的内容定义了一些对象,如文档(Document)、图像(Image)、表单(Form)等,对于这些还不成系统的对象,我们习惯称之为0级DOM。后来JavaScript又根据W3C制订的DOM文档规范,把所有网页内容都视为对象,调用这些对象就可以动态控制它们的显示,我们称之为1级或2级DOM。随着客户端开发的流行,DOM(文档对象模型)也逐渐成为客户端Web
第三章 使用XMLHttpRequest对象
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Hadoop I/O By ShiChaojie.
面向对象建模技术 软件工程系 林 琳.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
XML实用教程 北京大学出版社 丁跃潮 张涛 叶文来 刘韵华 程旭曼 丁潇 张天桥 2019/1/16.
逆向工程-汇编语言
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
A New Kind of JavaScript Library
SOA – Experiment 2: Query Classification Web Service
编程作业3:网页正文抽取 (10分).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
顺序表的删除.
VisComposer 2019/4/17.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目二:HTML语言基础.
ES 索引入门
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
临界区问题的硬件指令解决方案 (Synchronization Hardware)
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
§4.5 最大公因式的矩阵求法( Ⅱ ).
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
RefWorks使用指南 归档、管理个人参考文献.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

目标 在这一课里,你将学习: 确定XML 文档对象模型(DOM)的需求 使用以下的XML DOM对象访问XML文档的不同部分: DOMDocument IXMLDOMNode IXMLDOMNodeList IXMLDOMParseError

XML文档对象模型 文档对象模型(DOM)定义了文档的逻辑结构和访问操纵文档的方法。它为XML和HTML文档提供了应用程序程序接口(API)。 XML DOM把XML文档视为对象的混和体。每个对象都有能被DOM接口所提供的方法操纵的属性和行为。

XML文档对象模型(续) 使用XML DOM,编程人员可以建立XML文档,浏览文档的结构,增加、修改和删除文档的元素和内容。 XML DOM提供的对象和方法可以和任何编程语言(例如java、C++、Visual Basic)一起使用。这些对象也可以和诸如VBScript及JavaScript这样的脚本语言一起使用。 为了使用XML DOM的功能,你需要一个DOM 解析器。

XML文档对象模型(续) 这个解析器读入XML文档,并剖析确定该文档是否正确。然后,它把文档内容在内存中表示成一个逻辑树形结构。这个逻辑树形结构由节点组成。 MSXML就是一种DOM解析器。

用MSXML解析器实现DOM 当MSXML解析器载入文档时,解析器读入这个文档并且建立一个描述XML文档中各组成部分的树形结构。

用MSXML解析器实现DOM (续) 下图描述了应用程序如何通过DOM访问存储在XML文档重的数据:

XML 文档的树形结构 树形结构的基本构件块是节点。 节点是控制如元素、属性、内容、注释以及存储在XML文档里的处理指令的一般容器。 XML文档可以看成是一个包含所有其他节点的单个节点。

文档的树形结构 XML文档里的每个组成部分就表示成DOM树形结构里的一个节点。 每个节点都有和它相关的名字、类型和值。节点的名字就是和这个节点相关的那个XML文档组成部分的名字。节点的类型依赖于它所表示的组成部分的类型。 DOM把每个节点都看成对象。因此可以建立一个脚本来载入XML文档,遍历所有的节点并且把需要的信息显示给用户。

XML DOM 的对象和方法 ML DOM所提供的能让你遍历、读取和操纵XML文档的结构和内容的主要对象和方法如下: DOMDocument 对象 IXMLDOMNode 对象 IXMLDOMNodeList 对象 IXMLDOMParseError 对象

DOMDocument对象 对象DOMDocument是XML DOM的最高级对象。它实现了使用XML文档所需的所有基础方法。它也提供支持XSLT的方法。 该对象和各种帮助你浏览、查询、修改XML文档的内容和结构的方法有关。

DOMDocument对象 (续) DOMDocument对象的一些常用方法是: createElement(elementname): 创建一个元素节点。 createAttribute(attributename): 创建一个属性节点。 CreateNode(type, name, namespace-URI): 创建指定类型的节点,也支持名称空间URI。 getElementsByTagName(elementname): 返回有指定元素名称的元素节点集合。

DOMDocument对象 (续) load(XMLdocument): 载入指定XML文档。 appendChild(child node): 给文档附加指定子节点。 save(destination): 将DOMDocument对象表示的XML文档保存到指定位置。 DOMDocument对象常用的一些属性为: async: 允许指定XML文档是否可以异步载入。 childNodes: 返回子节点列表。 firstChild: 返回文档的第一个子节点。

DOMDocument对象 (续) readyState: 返回有关XML文档的信息(如载入中、已下载、对话、结束 ) parseError: 返回可用于检索错误信息的IXMLDOMParseError对象。 xml: 返回节点的XML表示。 validateOnParse: 指定是否检测XML文档的合法性。

创建DomDocument对象 以下是用JavaScript编写的建立一个DOMDocument对象实例的代码: var myxmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); 对新建立的对象的引用存储在变量myxmldoc 中,这个变量可以载入和操纵XML文档。

载入XML文件 为了用URL方式载入XML文件,你可以用JavaScript编写如下代码: myxmldoc.load("http://www.sb.com/ employee.xml"); 通过提供路径,方法load()也可以从本地主机载入XML文件,如下例所示: myxmldoc.load("c:\examples\employees.xml");

载入XML文件 (续) 要同步载入XML文档,你可以用JavaScript 编写如下代码: var myxmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); myxmldoc.async=false; myxmldoc.load("employee.xml");

使用readyState属性 属性readyState 用于检查文档是否被完全载入。属性readyState 含一个数字值,代表以下的状态: LOADING (1): 该状态表明载入过程正在进行中,数据还没有解析。 LOADED (2): 该状态表明数据已被读入和解析但是对象模型还没有就绪。

使用readyState属性(续) INTERACTIVE (3): 该状态表明对象模型的部分检索数据集是可用的,并且处于只读模式。 COMPLETED (4): 该状态表明载入过程已完全结束。

用createNode()方法可以创建一个新的节点。 以下的代码用createNode()方法创建了一个根元素: var myxmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); if (myxmldoc.childnodes.length==0) { myroot=myxmldoc.createNode(1,"ORDERDETAILS"," "); myxmldoc.appendChild(myroot); myxmldoc.save(myxmldoc.XMLDocument); }

创建新元素 对象DOMDocument的createElement()方法可以为文档创建新元素。createElement()方法只用一个参数,这个参数代表要创建的新元素的名字。 创建一个名为salary 的新元素节点: var xmlelement; xmlelement=myxmldoc.createElement ("salary");

访问XML文件中的元素 为了访问XML文档里的元素,你要从根节点开始浏览文档的树形结构。也可以查询具体的节点和节点集。 getElementsByTagName()方法能够找到特定的节点和节点集。

IXMLDOMNode 对象代表XML文档树形结构中的一个单个节点。 这个节点也可能包含其他子元素。 appendChild(newchild): 给节点追加新的子元素。 insertBefore(newNode, refNode): 在指定节点前插入新节点。 removeChild(nodeName): 删除指定节点。

replaceChild(newNode, oldNode): 用newNode替换oldNode。 IXMLDOMNode 对象 (续) replaceChild(newNode, oldNode): 用newNode替换oldNode。 hasChildNodes(): 指定节点是否有子节点。 cloneNode(boolean): 克隆IXMLDOMNode对象表示的节点。 IXMLDOMNode对象的一些常用属性是: nodeName: 返回节点名。 nodeType: 指定节点类型。 nodeValue: 返回包含在节点中的文本。 childNodes: 返回节点的子节点。

firstChild: 返回节点的第一个子节点。 lastChild: 返回节点的最后一个子节点。 IXMLDOMNode 对象 (续) firstChild: 返回节点的第一个子节点。 lastChild: 返回节点的最后一个子节点。 返回包含在IXMLDOMNode 对象中的文本。 xml: 返回节点的XML代码。

alert(myelement.text); 访问元素的文本值 XML文件里的带有标签的文本是DOM中的一个节点值。这个节点值可能是一个属性的值也可以是元素中的文本。 你可以用属性text 来显示元素或属性中的文本,如下所示: alert(myelement.text); 你也可以用这个属性来给元素赋值,如下所示: myelement.text=“Barbie Doll”;

追加一个新的子节点 以下的代码段用DOMDocument 对象的createElement()方法创建了一个新元素。然后把用appendchild()方法把一个新创建的元素加到元素myelement 的最后一个子节点上。 var myelement=myxmldoc.documentElement; var newElement=myxmldoc.createElement ("lastchild"); myelement.appendChild(newElement);

在两个已存在的节点前插入节点 下列代码段创建一个名为department的新元素并用它替换一个已存在的节点: var newElement= myxmldoc.createElement ("department"); var oldElement=myxmldoc.documentElement.childNodes.item(0).firstChild; myxmldoc.documentElement.childNodes.item(1).insertBefore(newElement, oldElement);

删除子节点 以下的代码使用removeChild()方法删除子节点: var oldElement=myxmldoc.documentElement.childNodes.item(0).firstChild; myxmldoc.documentElement.childNodes.item(0).RemoveChild(oldElement);

删除子节点 (续) 在下面的例子中,文档中的第二个元素被名为department的新元素替换: Var newElement= myxmldoc.createElement("department"); Var oldElement=myxmldoc.documentElement.childNodes.item(0).firstChild; myxmldoc.documentElement.childNodes.item(1).replaceChild(newElement, oldElement);

IXMLDOMNodeList 对象 IXMLDOMNodeList对象允许你遍历节点集合。 item(number):返回指定数值对应位置的节点 。 nextNode(): 返回列表中的下一个节点。 使用IXMLDOMNodeList 对象的属性length可以获得节点集中节点的个数。 Length属性也可用来遍历子节点列表。

IXMLDOMNodeList 对象 (续) 下列代码遍历myelement的子节点: var myelement=myxmlDoc.getElementsByTagName("emp"); for(i=0;i< myelement.length –1;i++) alert(myelement.item(i).xml);

IXMLDOMParseError 对象 IXMLDOMParseError 对象返回大部分最近发生的解析错误。

IXMLDOMParseError 对象 (续) errorCode: 返回错误代码。 reason: 返回说明错误原因的字符串。 line: 返回发生错误的行号。 linePos: 返回错误的行中的位置。 srcText: 返回包含引起错误的行的字符串。

使用IXMLDOMParseError 对象 你可以使用IXMLDOMParseError 对象来显示在解析XML文档时遇到的错误。 考虑以下的例子: var prodxml = new ActiveXObject("Msxml2.DOMDocument.4.0");prodxml.async = false; prodxml.load("product.xml"); if (prodxml.parseError.errorCode != 0) { alert("A parse error occurred.");} else {alert(prodxml.documentElement.xml);}

问题陈述 7.D.1 XML文档中存储着CyberShoppe 的产品详细资料。 DTD定义了XML文档的结构。XML文档里的数据必须 要经过指定规则的验证才能存储。

任务单 确定用程序访问XML文档的机制。 确定访问XML文档所需的对象。 编写访问XML文档的代码。 执行代码。

任务1:确定用程序访问XML文档的机制。 结果: 任何使用XML DOM的应用程序程序都可以访问和操纵XML文档的内容。因此,要用程序访问XML文档,使用XML DOM是最好的解决方案。VBScript、JavaScript、C/C++ 或 Visual Basic开发的应用程序程序都可以使用XML DOM对象。

任务2:确定访问XML文档所需的对象 。 结果: 你可以使用以下的XML DOM对象来验证XML文档对于DTD的内容: DOMDocument IXMLDOMParseError

任务3:编写访问XML文档的代码。 为了编写验证XML文档对于DTD的合法性,你需要按照如下步骤来做: 创建接收XML文件名的用户接口。

任务4: 执行脚本

稍等一下… 在XML文档product.xml中存储着CyberShoppe所卖产品的详细信息。编写使用DOM对象的代码显示所有产品的价格。

小结 在这课里,你学习了 DOM是能让应用程序程序访问XML文档内容的应用程序程序接口。 使用DOM对象可以访问和操纵XML文档。 MSXML 解析器载入XML文档时,创建描述XML文档中各组成部分的树形结构。

小结(续) 树形结构的基本构件块是节点。节点是控制如元素、属性、内容、注释以及存储在XML文档里的处理指令的一般容器。 几个用来操纵文档中数据的DOM对象是: DOMDocument IXMLDOMNode IXMLDOMNodeList IXMLDOMParseError

小结(续) 对象DOMDocument是XML DOM的最高级对象。此对象提供各种属性和方法帮助你浏览、查询、修改XML文档的内容和结构。 对象IXMLDOMNode代表XML文档树形结构中的节点。该对象提供了操纵子元素的方法。 对象IXMLDOMNodeList 让你能够遍历节点集。 对象IXMLDOMParseError 返回大部分最近发生错误的信息。