正文

XML Parser2006-05-26 15:05:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zzjcs1971/14907.html

分享到:

XML Parser

读取、更新、创建和处理一个XML文档,需要一个XML parser(语法分析器).

一、微软的XML Parser

微软的XML Parser是一个COM组件,它是随ie5及以上一起的。一但你安装了ie,那么这个分析器对脚本就

是有效的。
微软的XML Parser提供了所有必须的函数来访问结点以及它们的属性以及插入、删除结点和转换结点树到

XML。
下面列出了通常为微软的XML Parser所支持的结点类型:

结点类型  例子

处理指令  <?xml version="1.0"?>

元素   <drink type="beer">Carlsberg</drink>

属性   type="beer"

文本   Carlsberg


MSXML Parser 2.5是和Windows2000、ie5.5一起的
MSXML Parser 3.0是和Windowsxp、ie6.0一起的

MSXML Parser 3.0的特点:

1、支持JavaScript, VBScript, Perl, VB, Java, C++等
2、完全支持XML
3、完全支持DOM和名字空间
4、DTD及确认
5、完全支持XSLT和XPath
6、支持SAX2
7、Server-safe HTTP

 

用JavaScript来创建Microsoft's XML parser实例的代码如下:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")

用VBScript来创建Microsoft's XML parser实例的代码如下:
set xmlDoc=CreateObject("Microsoft.XMLDOM")

在ASP页创建Microsoft's XML parser实例的代码如下:
set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")

下面的代码装载一个XML文档(note.xml)到Microsoft's XML parser中:

<script type="text/javascript">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
...
...
...
</script>
说明:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM")创建一个 Microsoft XML parser的实例。
xmlDoc.load("note.xml")告诉语法分析器去装载一个名为note.xml的XML文档。
xmlDoc.async="false"关闭异步装载,以便于等到XML文档完全装载后分析器才继续脚本的执行。

二、Mozilla Browsers的XML Parser

一个简单的XML文档在Mozilla Browsers中以类似树的结构显示(像ie),Mozilla 也支持JavaScript,

被分析的数据能够显示为HTML。

在Mozilla Browsers中用JavaScript来创建Microsoft's XML parser实例的代码如下:
var xmlDoc=document.implementation.createDocument("ns","root",null)

说明:
"ns"定义XML文档所使用的名字空间;
"root"是XML的根元素;
null是第三个参数,必须是null。

下面的代码装载note.xml到Mozillas' XML parser中:

<script type="text/javascript">
var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.load("note.xml");
...
...
...
</script>

说明类似MSXML Parser。

三、一个跨浏览器的代码

<html>
<head>
<script type="text/javascript">
var xmlDoc
function loadXML()
{
//load xml file
// code for IE
if (window.ActiveXObject)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("note.xml");
getmessage()
}
// code for Mozilla, etc.
else if (document.implementation &&
document.implementation.createDocument)
{
xmlDoc= document.implementation.createDocument("","",null);
xmlDoc.load("note.xml");
xmlDoc.onload=getmessage
}
else
{
alert('Your browser cannot handle this script');
}
}function getmessage()
{
document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].firstChild.nodeValue
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].firstChild.nodeValue
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].firstChild.nodeValue
}
</script>
</head><body onload="loadXML()" bgcolor="yellow">
<h1>W3Schools Internal Note</h1>
<p><b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span>
<hr />
<b>Message:</b> <span id="message"></span>
</p>
</body>
</html>

四、装载XML文本到语法分析器中

ie支持两种方法装载XML:
load():装载XML文件
loadXML():一个包含XML代码的文本字符串

下面是一个loadXML()的例子:

<script type="text/javascript">

var txt="<note>"
txt=txt+"<to>Tove</to><from>Jani</from>"
txt=txt+"<heading>Reminder</heading>"
txt=txt+"<body>Don't forget me this weekend!</body>"
txt=txt+"</note>"

var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(txt)
...
...
...</script>

 

 

 

阅读(4995) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册