DOM解析XML.docx
《DOM解析XML.docx》由会员分享,可在线阅读,更多相关《DOM解析XML.docx(92页珍藏版)》请在冰豆网上搜索。
![DOM解析XML.docx](https://file1.bdocx.com/fileroot1/2023-2/21/52acf22c-ef09-4a11-90d6-54d42c37952e/52acf22c-ef09-4a11-90d6-54d42c37952e1.gif)
DOM解析XML
目录
XMLDOM教程4
XMLDOM首页4
XMLDOM简介5
XMLDOM节点6
节点6
Node层次6
DOM节点层次范例6
XMLDOM节点树8
什么是节点数?
8
XMLDOM访问节点9
查找并访问节点9
getElementsByTagName()9
parentNode、firstChild以及lastChild10
根节点10
XMLDOM节点信息11
节点信息11
nodeName11
nodeValue11
nodeType11
XMLDOM节点列表(NodeList)和指定节点地图(NamedNodeMap)12
DOMNodeList和NamedNodeMap12
DOMNodeList12
取得节点列表的长度13
DOMNamedNodeMap14
取得NamedNodeMap的长度14
取得NamedNodeMap中某个项目的值15
解析XMLDOM15
实例15
解析一个XML文档16
微软的XML解析器16
Mozilla、Firefox以及Opera中的XML解析器17
解析某个XML文件-跨浏览器的实例17
解析一个XML字符串-跨浏览器的实例19
XMLDOM遍历节点树21
实例21
遍历节点树21
XMLDOMMozillavs.InternetExplorer23
DOM解析过程中浏览器差异23
XMLDOM节点导航25
DOM节点导航25
取得节点的首个子元素26
取得节点的前一个同级节点27
节点操作28
XMLDOM取得节点28
实例28
取得某个元素的值28
取得某个属性的值29
取得某个项目的值30
XMLDOM设置节点31
实例31
设置一个新的属性以及属性值31
另一种创建新属性的方法31
改变一个属性值32
改变一个项目的值32
XMLDOM删除节点33
实例33
删除某个元素33
从元素删除文本34
删除属性34
removeAttributeNode()35
XMLDOM替换节点36
实例36
替换节点列表中的某个节点36
替换文本节点中的数据37
XMLDOM创建节点38
实例38
创建一个元素38
创建一个属性39
创建一个文本节点39
创建一个CDATASection节点40
创建一个注释节点40
XMLDOM添加节点41
实例41
向一个节点列表的末尾添加一个节点41
在某个特定的节点之前插入节点42
设置新的属性和属性值43
向某个文本节点插入数据44
XMLDOM克隆节点44
实例44
复制节点44
XMLDOM参考手册45
XMLDOM参考手册目录45
XMLDOM节点类型(NodeTypes)46
实例46
节点类型46
节点类型-所返回的值47
NodeTypes-有名常数48
XMLDOM-Node对象48
Node对象48
Node对象的属性49
Node对象的方法50
XMLDOM-NodeList对象51
NodeList对象51
NodeList对象的属性51
NodeList对象的方法51
XMLDOM-NamedNodeMap对象52
NamedNodeMap对象52
NamedNodeMap对象的属性52
NamedNodeMap对象的方法52
XMLDOM-Document对象53
Document对象53
Node对象的属性53
Document对象的方法54
XMLDOM-DocumentImplementation对象55
DocumentImplementation对象55
DocumentImplementation对象的方法55
XMLDOM-DocumentType对象56
XMLDOM-ProcessingInstruction对象57
DocumentType对象57
ProcessingInstruction对象的属性57
XMLDOM-Element对象57
Element对象57
Element对象的属性57
Element对象的方法58
XMLDOM-Attr对象61
Attr对象61
Attr对象的属性61
XMLDOM-Text对象62
Text对象62
Text对象的属性62
Text对象的方法63
XMLDOM-CDATASection对象63
实例63
CDATASection对象63
CDATASection对象的属性64
CDATASection对象的方法64
XMLDOM-Comment对象64
实例64
Comment对象64
Comment对象的属性64
Comment对象的方法65
XMLHttpRequest对象65
什么是HTTPRequest?
65
XMLHttpRequest对象是W3C标准吗?
65
创建XMLHttpRequest对象66
我们为何在例子中使用异步(Async)?
68
更多实例68
XMLHttpRequest对象参考68
XMLDOM解析器错误(ParserErrors)69
parseError对象69
文件错误(FileError)70
XML错误(XMLError)70
parseError对象的属性70
XMLDOM教程
XMLDOM首页
XML文档对象模型定义访问和操作XML文档的标准方法。
DOM将XML文档作为一个树形结构,而树叶被定义为节点。
开始学习DOM!
XMLDOM对象参考手册
在W3School,我们提供完整的DOM参考手册,其中包括所有的对象以及它们的属性和方法。
XMLDOM参考手册
XMLDOM实例
学习50个实例!
使用我们的编辑器,你可以编辑源代码,然后单击测试按钮来查看结果。
TIY
XMLDOM简介
XML文档对象模型(XMLDocumentObjectModel)定义了一种访问和处理XML文档的标准方法。
您应当具备的基础支持
在继续学习之前,您应当对下列知识有基本的了解:
∙HTML/XHTML
∙JavaScript
∙XML
如果您希望首先学习这些项目,请在我们的首页访问这些教程。
什么是DOM?
“W3C文档对象模型(DOM)是一个使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式的平台和语言中立的接口。
”
W3CDOM提供了一套标准的用于HTML和XML文档的对象,以及一个访问这些文档的标准接口。
W3CDOM被分为不同的部分(核心、XML、HTML)以及不同的级别(DOMLevel1/2/3):
核心DOM
定义了一套标准的用于任何结构化文档的对象
XMLDOM
定义了一套标准的用于XML文档的对象
HTMLDOM
定义了一套标准的用于HTML文档的对象
您可以在我们的W3C教程中获得更多有关W3CDOM规范/级别的信息。
什么是XMLDOM?
∙XMLDOM是针对XML的文档对象模型(DocumentObjectModel)
∙XMLDOM独立于平台和语言
∙XMLDOM定义了一套标准的用于XML的对象
∙XMLDOM定义一种标准的访问XML文档的方法
∙XMLDOM定义了一种标准的处理XML文档的方法
∙XMLDOM是一个W3C标准
DOM将XML文档作为树结构来查看。
所有的元素;它们所包含的文本以及它们的属性,可通过DOM树来进行访问。
它们的内容可以被修改或删除,新内容也可被创建。
元素、它们的文本以及它们的属性均被作为节点。
XMLDOM节点
XML文档中的每个成分都是一个节点。
节点
根据DOM,XML文档中的每各成分都是一个节点。
DOM是这样规定的:
∙整个文档是一个文档节点
∙每个XML标签是一个元素节点
∙包含在XML元素中的文本是文本节点
∙每一个XML属性是一个属性节点
∙注释属于注释节点
Node层次
节点彼此都有等级关系。
XML文档中的所有节点组成了一个文档树(或节点树)。
XML文档中的每个元素、属性、文本等都代表着树中的一个节点。
树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。
术语“父”和“子”被用来描述节点间的关系。
某些节点拥有子节点,而另一些节点没有子节点(或称叶节点)。
由于XML数据被组织在树结构中,所以可在不确定树的具体结构以及其中所包含的数据类型的情况下,对XML数据进行遍历。
DOM节点层次范例
请看下面这个XML文件:
books.xml
xmlversion="1.0"encoding="ISO-8859-1"?
>
EverydayItalian
GiadaDeLaurentiis
2005
30.00
HarryPotter
JK.Rowling
2005
29.99
XQueryKickStart
JamesMcGovern
PerBothner
KurtCagle
JamesLinn
VaidyanathanNagarajan
2003
49.99
LearningXML
ErikT.Ray
2003
39.95
请注意,此XML文档中的根元素被命名为。
所有此文档中的其余的元素都被包含在内部。
元素代表DOM树的根节点。
节点拥有四个子节点。
第一个子节点也含有四个子节点:
、、以及,它们各自只包含着文本,"EverydayItalian"、"GiadaDeLaurentiis"、"2005"以及"30.00"。重要事项:
文本总是被存储在文本节点中。
在DOM处理中的一个常见的错误是导航到某个元素节点,并期望其包含文本。
然而,即使最简单的元素节点在其之下也拥有文本节点。
举个例子,在2005中,存在一个元素节点(year),同时其下是一个文本节点,其中包含文本(2005)。
下面这幅图向我们展示了来自上面这个XML文档的DOM节点数的一个片段:
请访问我们的节点类型参考手册,获得有关全部节点类型以及它们可拥有的子节点的完整信息。
XMLDOM节点树
一个节点树中的所有节点彼此都是有关系的。
什么是节点数?
一个节点树可以把一个XML文档展示为一个节点集,以及它们之间的连接。
在一个节点树中,最顶端的节点被称为根
每一个节点,除根之外,都拥有父节点
一个节点可以有无限的子
叶是无子的节点
同级节点指拥有相同的父的节点
请看下面这个XML文件:
xdom_books.xml。
下面这幅图向我们展示了节点树的一个部分,以及上面这个XML文件中节点间的关系。
XMLDOM访问节点
通过DOM,您可以访问XML文档中的每个节点。
查找并访问节点
你可通过若干种方法来查找您希望操作的元素:
通过使用getElementsByTagName()方法
通过使用一个元素节点的parentNode、firstChild以及lastChild属性
getElementsByTagName()
getElementsByTagName()方法可在整个文档中查找任何XML元素。
此方法会忽略文档的结构。
假如你文档中所有元素,getElementsByTagName()方法会全部找出它们,不管这些元素位于哪个级别。
就是说,这个方法会给您任何您所需要的XML元素,不论它们所处的位置!
getElementsByTagName()方法会使用指定的标签名返回所有的元素(作为一个节点列表),这些元素是您在使用此方法时所处的元素的后代。
getElementsByTagName()可用于任何XML元素:
getElementsByTagName()语法
getElementsByTagName("tagname");
例子
下面这个例子会返回文档中所有元素的一个节点列表:
xmlDoc.getElementsByTagName("book");
节点列表
当使用某个节点列表时,我们通常会把此列表存储在一个变量中,就像这样:
varx=xmlDoc.getElementsByTagName("book");
现在,变量x包含着页面中所有元素的一个列表,并且我们可通过它们的索引号莱访问这些元素。
注释:
索引起始于0。
您可以通过使用length属性来循环遍历节点列表:
varx=xmlDoc.getElementsByTagName("book");
for(vari=0;i{
//dosomethingwitheachelement
}
您也可以通过使用索引号莱访问某个具体的元素。
要访问第三个元素,您可以这样写:
vary=x[2];
parentNode、firstChild以及lastChild
属性parentNode、firstChild以及lastChild会遵循文档的结构,可在文档中继续进行短距离的旅行。
请看下面的XML片段:
EverydayItalian
GiadaDeLaurentiis
2005
30.00
在上面的XML代码中,
元素是元素的首个子元素(firstChild),元素是元素的最后一个子元素(lastChild)。同时,元素是、、以及元素的父节点(parentNode)
根节点
有一个特殊的文档属性可用来访问这些标签:
∙document.documentElement
此属性可返回存在于XML和HTML文档中的根节点。
XMLDOM节点信息
nodeName、nodeValue以及nodeType包含有关于节点的信息。
节点信息
每个节点都拥有包含着关于节点某些信息的属性。
这些属性是:
∙nodeName(节点名称)
∙nodeValue(节点值)
∙nodeType(节点类型)
nodeName
nodeName属性含有节点的名称。
∙元素节点的nodeName是标签名称
∙属性节点的nodeName是属性名称
∙文本节点的nodeName永远是#text
∙文档节点的nodeName永远是#document
注释:
nodeName所包含的XML元素的标签名称永远是大写的。
nodeValue
对于文本节点,nodeValue属性包含文本。
对于属性节点,nodeValue属性包含属性值。
nodeValue属性对于文档节点和元素节点是不可用的。
nodeType
nodeType属性可返回节点的类型。
最重要的节点类型是:
元素类型
节点类型
元素
1
属性
2
文本
3
注释
8
文档
9
XMLDOM节点列表(NodeList)和指定节点地图(NamedNodeMap)
nodeName、nodeValue以及nodeType包含有关于节点的信息。
DOMNodeList和NamedNodeMap
本节为您讲解NodeList和NamedNodeMap的概念,以及它们之间的区别。
DOMNodeList
当我们使用类似childNodes或getElementsByTagName()之类的属性或方法时,就会收到一个NodeList对象。
NodeList对象代表一个有序的节点列表。
可通过它们的索引号码(由0起始)来访问节点列表中的这些节点。
注释:
在一个节点列表中,其中的节点是按照它们在XML中被规定的顺序来返回的。
请看下面这个XML文件:
books.xml
现在,我们要通过使用方法getElementsByTagName("title"),来创建一个"books.xml"中所有
元素的节点列表。下面这幅图表示所返回的节点列表:
下面这个代码片段可从第一个
元素中取得文本:getElementsByTagName("title")[0].childNodes[0].nodeValue
输出:
EverydayItalian
取得节点列表的长度
节点列表可保持其自身的更新。
如果某个元素被删除或添加,那么列表会自动更新。
节点列表有一个很有用的属性:
length。
length属性可返回某个节点列表中的节点数目。
下面的代码片段可取得"books.xml"中
元素的数目:getElementsByTagName('title').length
输出:
4
当您了解到某个节点列表的长度后,就可以轻易地循环遍历这个列表,并提取您需要的值。
下面的代码片段循环遍历所有的
元素,并输出它们的值://thexvariablewillholdaNodeList
varx=getElementsByTagName('title')for(i=0;i{
document.write(x[i].childNodes[0].nodeValue)
document.write("
")
}
输出:
EverydayItalian
HarryPotter
XQueryKickStart
LearningXML
DOMNamedNodeMap
当我们对某个元素使用attributes属性时,就会收到一个NamedNodeMap对象。
一个NamedNodeMap代表了属性节点的一个无序列表。
可通过节点名称访问NamedNodeMap中的节点。
注释:
在一个NamedNodeMap中,节点不会以任何特别的顺序返回。
取得NamedNodeMap的长度
NamedNodeMap会保持自身的更新。
如果某个元素被删除或添加,此列表也会被自动更新。
NamedNodeMap也拥有length属性。
length属性可返回列表中的节点数目。
请看下面这个XML文件:
books.xml
下面的这个代码片段可取得"books.xml"中第一个
元素的属性数目:
getElementsByTagName('title')[0].attributes.length
输出:
1
取得NamedNodeMap中某个项目的值
NamedNodeMap对象的getNamedItem()方法可被用来取回某个指定的节点。
下面的代码片段向我们展示了如何输出每个元素中"category"属性的值:
xmlDoc=loadXMLDoc("books.xml");
varx=xmlDoc.getElementsByTagName("book");
for(i=0;i{
//theattlistvariablewillholdaNamedNodeMap
varattlist=x.item(i).attributes;
varatt=attlist.getNamedItem("category");
document.write(att.value+"
")
}
输出:
COOKING
CHILDREN
WEB
WEB
解析XMLDOM
如需读取、更新、创建或者操作某个XML文档,则需要XML解析器。
实例
解析XML文件-跨浏览器的实例
本例是一个跨浏览器的实例,把某个XML文档("note.xml")载入XML解析器。
解析XML字符串-跨浏览器的实例
本例是一个跨浏览器的实例,展示如何载入并解析某个XML字符串。
解析一个XML文档
如需操作某个XML文档,您需要XML解析器。
解析器会将文档载入电脑的内存中。
一旦文档被载入,可使用DOM对其数据进行操作。
DOM把XML作为一颗树来处理。
微软的XML解析器与Mozilla浏览器中使用的解析器是有差异的。
在本教程中,我们会为您展示如何创建可工作于IE和Mozilla浏览器中的跨浏览器脚本。
微软的XML解析器
微软的XML解析器是存在于IE5.0或更高版本中的COM组件。
一旦你安装了IE,就可使用脚本来利用解析器了。
微软的XML解析器支持所有必要的功能,来遍历节点树,访问节点以及它们的属性值,插入并删除节点,并将节点数转换回XML。
如需创建微软XML解析器的一个实例,请使用下