xml学习教程.docx
- 文档编号:24119288
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:21
- 大小:31.29KB
xml学习教程.docx
《xml学习教程.docx》由会员分享,可在线阅读,更多相关《xml学习教程.docx(21页珍藏版)》请在冰豆网上搜索。
xml学习教程
Xml
一、xml简介
(一)xml说明
XML被设计用来传输和存储数据。
XML指可扩展标记语言(EXtensibleMarkupLanguage)
XML是一种标记语言,很类似HTML
XML的设计宗旨是传输数据,而非显示数据
XML标签没有被预定义。
您需要自行定义标签。
XML被设计为具有自我描述性。
XML是W3C的推荐标准
(二)XML与HTML的主要差异
XML不是HTML的替代。
XML和HTML为不同的目的而设计。
XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而XML旨在传输信息。
XML不是对HTML的替代
XML是对HTML的补充。
XML不是对HTML的替代,理解这一点很重要。
在大多数web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。
二、xml的用途
1.XML把数据从HTML分离
如果你需要在HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。
通过XML,数据能够存储在独立的XML文件中。
这样你就可以专注于使用HTML进行布局和显示,并确保修改底层数据不再需要对HTML进行任何的改变。
通过使用几行JavaScript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。
2.XML简化数据传输
通过XML,可以在不兼容的系统之间轻松地交换数据。
对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。
由于可以通过各种不兼容的应用程序来读取数据,以XML交换数据降低了这种复杂性。
3.XML简化平台的变更
升级到新的系统(硬件或软件平台),总是非常费时的。
必须转换大量的数据,不兼容的数据经常会丢失。
XML数据以文本格式存储。
这使得XML在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
三、xml语法规则
1.所有XML元素都须有关闭标签
在HTML,经常会看到没有关闭标签的元素:
2.XML标签对大小写敏感
XML元素使用XML标签进行定义。
XML标签对大小写敏感。
在XML中,标签
必须使用相同的大小写来编写打开标签和关闭标签
3.XML必须正确地嵌套
4.XML文档必须有根元素
5.XML的属性值须加引号
6.实体引用:
在XML中,一些字符拥有特殊的意义。
这样会产生XML错误:
为了避免这个错误,请用一个实体引用来代替"<"字符:
<
<
小于
>
>
大于
&
&
和号
'
'
单引号
"
"
引号
注释:
在XML中,只有字符"<"和"&"确实是非法的。
大于号是合法的,但是用实体引用来代替它是一个好习惯。
7.XML中的注释
在XML中编写注释的语法与HTML的语法很相似:
--Thisisacomment-->
8.在XML中,空格会被保留
在XML中,文档中的空格不会被删节。
9.XML以LF存储换行
在Windows应用程序中,换行通常以一对字符来存储:
回车符(CR)和换行符(LF)。
这对字符与打字机设置新行的动作有相似之处。
在Unix应用程序中,新行以LF字符存储。
而Macintosh应用程序使用CR来存储新行。
四、命名规则
XML命名规则
XML元素必须遵循以下命名规则:
∙名称可以含字母、数字以及其他的字符
∙名称不能以数字或者标点符号开始
∙名称不能以字符“xml”(或者XML、Xml)开始
∙名称不能包含空格
可使用任何名称,没有保留的字词。
五、xml属性
XML属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用。
(一)避免XML属性?
因使用属性而引起的一些问题:
∙属性无法包含多重的值(元素可以)
∙属性无法描述树结构(元素可以)
∙属性不易扩展(为未来的变化)
∙属性难以阅读和维护
(二)形式良好的XML文档
一个"形式良好"的XML文档拥有正确的语法。
一个"形式良好"的XML文档会遵守前几章介绍过的XML语法规则:
∙XML文档必须有根元素
∙XML文档必须有关闭标签
∙XML标签对大小写敏感
∙XML元素必须被正确的嵌套
∙XML属性必须加引号
六、使用CSS显示XML
在css里面直接用xml的标签名来做标记。
Css文件
CATALOG
{
background-color:
#ffffff;
width:
100%;
}
CD
{
display:
block;
margin-bottom:
30pt;
margin-left:
0;
}
Xml文件
Xml引入css文件命名空间:
xml-stylesheettype="text/css"href="cd_catalog.css"?
>
七、使用XSLT显示XML
使用XSLT显示XML
XSLT是首选的XML样式表语言。
XSLT(eXtensibleStylesheetLanguageTransformations)远比CSS更加完善。
引入xslt命名空间
xml-stylesheettype="text/xsl"href="simple.xsl"?
>
八、xml解析器
解析XML
所有现代浏览器都有读取和操作XML的内建XML解析器。
解析器把XML载入内存,然后把它转换为可通过JavaScript访问的XMLDOM对象。
(一)通过微软的XML解析器来加载XML
微软的XML解析器内建于InternetExplorer5以及更高的版本中。
下面的JavaScript片段把一个XML文档载入解析器中:
varxmlDoc=newActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");
例子解释:
1.上面代码的第一个行创建一个空的微软XML文档对象。
2.第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
3.第三行告知解析器加载名为"note.xml"的XML文档。
下面的JavaScript片段把字符串txt载入解析器:
varxmlDoc=newActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
(三)在Firefox及其他浏览器中的XML解析器
1.下面的JavaScript片段把XML文档("note.xml")载入解析器:
varxmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("note.xml");
例子解释:
1.上面代码的第一个行创建一个空的XML文档对象。
2.第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
3.第三行告知解析器加载名为"note.xml"的XML文档。
2.下面的JavaScript片段把字符串txt载入解析器:
varparser=newDOMParser();
vardoc=parser.parseFromString(txt,"text/xml");
例子解释:
1.上面代码的第一个行创建一个空的微软XML文档对象。
2.第二行告知解析器载入名为txt的字符串。
注释:
InternetExplorer使用loadXML()方法来解析XML字符串,而其他浏览器使用DOMParser对象。
XMLDOM简介
XMLDOM(XMLDocumentObjectModel)定义一套访问和操作XML文档的标准方法。
DOM把XML文档作为树结构来查看。
能够通过DOM树来访问所有元素。
可以修改或删除它们的内容,并创建新的元素。
元素,它们的文本,以及它们的属性,都被认为是节点。
在下面的例子中,我们使用DOM引用从
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue
∙xmlDoc-由解析器创建的XML文档
∙getElementsByTagName("to")[0]-第一个
∙childNodes[0]-
∙nodeValue-节点的值(文本本身)
一、XMLDOM属性
一些典型的DOM属性:
∙x.nodeName-x的名称
∙x.nodeValue-x的值
∙x.parentNode-x的父节点
∙x.childNodes-x的子节点
∙x.attributes-x的属性节点
二、XMLDOM方法
∙x.getElementsByTagName(name)-获取带有指定标签名称的所有元素
∙x.appendChild(node)-向x插入子节点
∙x.removeChild(node)-从x删除子节点
注释:
在上面的列表中,x是一个节点对象。
实例
从books.xml中的
txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue
解释:
∙xmlDoc-由解析器创建的XMLDOM
∙getElementsByTagName("title")[0]-第一个
∙childNodes[0]-
∙nodeValue-节点的值(文本节点的值为文本自身)
三、访问节点
您可以通过三种方法来访问节点:
1.通过使用getElementsByTagName()方法
2.通过循环(遍历)节点树
3.通过利用节点的关系在节点树中导航
(一)getElementsByTagName()方法
getElementsByTagName()返回拥有指定标签名的所有元素。
如:
x=xmlDoc.getElementsByTagName("TITLE");
for(i=0;i { document.write(x[i].childNodes[0].nodeValue); document.write(" } 注: getElementsByTagName()方法返回节点列表(nodelist)。 (二)DOMNodeList getElementsByTagName()方法返回节点列表(nodelist)。 节点列表是节点的数组。 xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); 可通过下标访问x中的
");
要访问第三个
y=x[2];
(三)NodeType
XML文档的documentElement属性是根节点。
节点的nodeName属性是节点的名称。
节点的nodeType属性是节点的类型。
实例:
遍历节点
下面的代码循环根节点的子节点,同时也是元素节点:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for(i=0;i { if(x[i].nodeType==1) {//Processonlyelementnodes(type1) document.write(x[i].nodeName); document.write(" } } 四、XMLDOM节点信息 注: 文本也是节点命名为文本节点。 节点的属性 在XML文档对象模型(DOM)中,每个节点都是一个对象。 对象拥有方法(功能)和属性(关于对象的信息),并可通过JavaScript进行访问和操作。 三个重要的XMLDOM节点属性是: ∙nodeName ∙nodeValue ∙nodeType (一)nodeName属性 nodeName属性规定节点的名称。 ∙nodeName是只读的 ∙元素节点的nodeName与标签名相同 ∙属性节点的nodeName是属性的名称 ∙文本节点的nodeName永远是#text ∙文档节点的nodeName永远是#document (二)nodeValue属性 nodeValue属性规定节点的值。 ∙元素节点的nodeValue是undefined ∙文本节点的nodeValue是文本自身 ∙属性节点的nodeValue是属性的值 《查看xml_DOM2中的xml_dom_length.html》 例子1: 获取元素的值 下面的代码检索第一个
");
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
txt=x.nodeValue;
例子2:
更改元素的值
下面的代码更改第一个
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="EasyCooking";
(三)nodeType属性
nodeType属性规定节点的类型。
nodeType是只读的。
最重要的节点类型是:
元素类型
节点类型
元素
1
属性
2
文本
3
注释
8
文档
9
(四)定位DOM节点
通过节点间的关系访问节点树中的节点,通常称为定位节点("navigatingnodes")。
在XMLDOM中,节点的关系被定义为节点的属性:
∙parentNode
∙childNodes
∙firstChild
∙lastChild
∙nextSibling
∙previousSibling
五、获取和设置元素值
(一)获取元素
getElementsByTagName()方法返回包含拥有指定标签名的所有元素的节点列表,其中的元素的顺序是它们在源文档中出现的顺序。
下面的代码通过使用loadXMLDoc()把"books.xml"载入xmlDoc中,并检索第一个
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];childNodes属性返回子节点的列表。
下面的代码检索
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
nodeValue属性返回文本节点的文本值:
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
txt=y.nodeValue;
结果:
txt="HarryPotter"
(二)设置:
改变文本节点的值
nodeValue属性可用于改变文本节点的值。
下面的代码片段改变了第一个
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="HelloWorld";
(三)删除元素节点
removeChild()方法删除指定的节点。
当一个节点被删除时,其所有子节点也会被删除。
下面的代码片段将从载入的xml中删除第一个
xmlDoc=loadXMLDoc("books.xml");
y=xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
(四)删除自身-删除当前的节点
removeChild()方法是唯一可以删除指定节点的方法。
当你已定位需要删除的节点时,就可以通过使用parentNode属性和removeChild()方法来删除此节点:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
(五)删除文本节点
removeChild()方法可用于删除文本节点:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
x.removeChild(y);
(六)根据名称删除属性节点
removeAttribute(name)方法用于根据名称删除属性节点。
Example:
removeAttribute('category')
下面的代码片段删除第一个
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
(七)根据对象删除属性节点
removeAttributeNode(node)方法通过使用Node对象作为参数,来删除属性节点。
Example:
removeAttributeNode(x)
下面的代码片段删除所有
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
for(i=0;i { while(x[i].attributes.length>0) { attnode=x[i].attributes[0]; old_att=x[i].removeAttributeNode(attnode); } } 六、获取和设置属性值 方法一: getAttribute() getAttribute()方法返回属性的值。 下面的代码检索第一个
xmlDoc=loadXMLDoc("books.xml");
txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");
方法二:
getAttributeNode()
getAttributeNode()方法返回属性节点。
下面代码检索第一个
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].getAttributeNode("lang");
txt=x.nodeValue;
方法三:
//遍历属性(方法一)
x=xmlDoc.getElementsByTagName("book");
for(i=0;i { //document.write(x[i].attributes.getNamedItem("category").nodeValue); document.write(x[i].attributes[0].nodeValue);//获取第1属性的值;nodeName表示属性的名字 document.write(" } 设置属性的值: 方法一: setAttribute()来改变属性 setAttribute()方法设置已有属性的值,或创建新属性。 下面的代码改变 xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName('book'); x[0].setAttribute("category","child"); 把"category"属性的值更改为"child" 方法二: 通过使用nodeValue改变属性 nodeValue属性可用于更改属性节点的值: xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0] y=x.getAttributeNode("category"); y.nodeValue="child"; xml之xslt 一、XSLT基础 (一)XSL语言 它起始于XSL,结束于XSLT、XPath以及XSL-FO。 起始于XSL XSL指扩展样式表语言(EXten
");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- xml 学习 教程