XML(三)

来源:互联网 发布:arttemplate.js api 编辑:程序博客网 时间:2024/06/18 01:20


使用 XSLT 显示 XML 

 

--------------------------------------------------------------------------------

 

通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式。

 

 

--------------------------------------------------------------------------------

 

使用 XSLT 显示 XML

XSLT 是首选的 XML 样式表语言。

 

XSLTeXtensible Stylesheet Language Transformations)远比 CSS 更加完善。

 

XSLT 是在浏览器显示 XML 文件之前,先把它转换为 HTML

 

使用 XSLT 显示 XML

 

 

 

--------------------------------------------------------------------------------

 

在服务器上通过 XSLT 转换 XML

在上面的实例中,当浏览器读取 XML 文件时,XSLT 转换是由浏览器完成的。

 

在使用 XSLT 来转换 XML 时,不同的浏览器可能会产生不同结果。为了减少这种问题,可以在服务器上进行 XSLT 转换。

如果您想要学习有关 XSLT 的知识,请在我们的首页查找 XSLT 教程。

 

 

 

 

XMLHttpRequest 对象

 

--------------------------------------------------------------------------------

 

XMLHttpRequest 对象

XMLHttpRequest 对象用于在后台与服务器交换数据。

 

XMLHttpRequest 对象是开发者的梦想,因为您能够:

 

在不重新加载页面的情况下更新网页 

在页面已加载后从服务器请求数据 

在页面已加载后从服务器接收数据 

在后台向服务器发送数据 

创建一个 XMLHttpRequest 对象

所有现代浏览器(IE7+FirefoxChromeSafari 和 Opera)都有内建的 XMLHttpRequest 对象。

 

创建 XMLHttpRequest 对象的语法:

 

xmlhttp=new XMLHttpRequest();

旧版本的Internet ExplorerIE5IE6)中使用 ActiveX 对象:

 

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

XML Parser 

 

--------------------------------------------------------------------------------

 

所有现代浏览器都有内建的 XML 解析器。

 

XML 解析器把 XML 文档转换为 XML DOM 对象 可通过 JavaScript 操作的对象。

 

 

--------------------------------------------------------------------------------

 

解析 XML 文档

下面的代码片段把 XML 文档解析到 XML DOM 对象中:

 

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.open("GET","books.xml",false);

xmlhttp.send();

xmlDoc=xmlhttp.responseXML; 

 

--------------------------------------------------------------------------------

 

解析 XML 字符串

下面的代码片段把 XML 字符串解析到 XML DOM 对象中:

 

txt="<bookstore><book>";

txt=txt+"<title>Everyday Italian</title>";

txt=txt+"<author>Giada De Laurentiis</author>";

txt=txt+"<year>2005</year>";

txt=txt+"</book></bookstore>";

 

if (window.DOMParser)

{

parser=new DOMParser();

xmlDoc=parser.parseFromString(txt,"text/xml");

}

else // Internet Explorer

{

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async=false;

xmlDoc.loadXML(txt); 

注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。

 

 

--------------------------------------------------------------------------------

 

跨域访问

出于安全方面的原因,现代的浏览器不允许跨域的访问。

 

这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。

 

XML DOM 

 

--------------------------------------------------------------------------------

 

DOMDocument Object Model 文档对象模型)定义了访问和操作文档的标准方法。

 

 

--------------------------------------------------------------------------------

 

XML DOM

XML DOMXML Document Object Model)定义了访问和操作 XML 文档的标准方法。 

 

XML DOM 把 XML 文档作为树结构来查看。

 

所有元素可以通过 DOM 树来访问。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。 

 

 

 

--------------------------------------------------------------------------------

 

HTML DOM

HTML DOM 定义了访问和操作 HTML 文档的标准方法。 

 

所有 HTML 元素可以通过 HTML DOM 来访问。

 

 

 

--------------------------------------------------------------------------------

 

加载一个 XML 文件 跨浏览器实例

下面的实例把 XML 文档("note.xml")解析到 XML DOM 对象中,然后通过 JavaScript 提取一些信息:

 

实例

<html>

<body>

<h1>W3Schools Internal Note</h1>

<div>

<b>To:</b> <span id="to"></span><br />

<b>From:</b> <span id="from"></span><br />

<b>Message:</b> <span id="message"></span>

</div>

 

<script>

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.open("GET","note.xml",false);

xmlhttp.send();

xmlDoc=xmlhttp.responseXML;

 

document.getElementById("to").innerHTML=

xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;

document.getElementById("from").innerHTML=

xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;

document.getElementById("message").innerHTML=

xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;

</script>

 

</body>

</html>

 

--------------------------------------------------------------------------------

 

重要注释!

如需从上面的 XML 文件("note.xml")的 <to> 元素中提取文本 "Tove",语法是:

 

getElementsByTagName("to")[0].childNodes[0].nodeValue

请注意,即使 XML 文件只包含一个 <to> 元素,您仍然必须指定数组索引 [0]。这是因为 getElementsByTagName() 方法返回一个数组。

 

 

--------------------------------------------------------------------------------

 

加载一个 XML 字符串 跨浏览器实例

下面的实例把 XML 字符串解析到 XML DOM 对象中,然后通过 JavaScript 提取一些信息:

 

实例

<html>

<body>

<h1>W3Schools Internal Note</h1>

<div>

<b>To:</b> <span id="to"></span><br />

<b>From:</b> <span id="from"></span><br />

<b>Message:</b> <span id="message"></span>

</div>

 

<script>

txt="<note>";

txt=txt+"<to>Tove</to>";

txt=txt+"<from>Jani</from>";

txt=txt+"<heading>Reminder</heading>";

txt=txt+"<body>Don't forget me this weekend!</body>";

txt=txt+"</note>";

 

if (window.DOMParser)

{

parser=new DOMParser();

xmlDoc=parser.parseFromString(txt,"text/xml");

}

else // Internet Explorer

{

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async=false;

xmlDoc.loadXML(txt);

}

 

document.getElementById("to").innerHTML=

xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;

document.getElementById("from").innerHTML=

xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;

document.getElementById("message").innerHTML=

xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;

</script>

</body>

</html> 

0 0
原创粉丝点击