Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19 用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); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34 使用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);}

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

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

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

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

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

40 任务4: 执行脚本

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

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

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

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


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

Similar presentations


Ads by Google