XML DOM

document.implemention.createDocument()三个参数,分别是文档的命名空间、文档元素的标签名及一个文档类型对象

(缺省为Null,表示新文档)



var oXmlDom = documnet.implementation.createDocument("http://www.51js.com","xompactdiscs",null);



当文档创建完成后,返回该文档的引用,所以上面的oXmlDoc是一个XMLDocumnet对象,DOM为XMLDocumnet对象提供了load(方法,用来载入外部的XML文件。

oXmlDoc.load(test.xml);

oXmlDoc.async = false;同步



oXmlDoc = ture;

oXmlDoc.onload = function(){alert("done");} oXmlDoc.load("test.xml");
 
IE的XML DOM组件
与Mozilla支持的标准接口不同,Microsoft通过ActiveX的MSXML库向IE提供支持,如:
var oXmlDom = new ActiveXObject("msxml2.domdOCUMNET.5.0")
MSXML为XMLDOMDocument提供了两个用来加载XML文档的方法,分别是load()和loadXML(),前者和标准接口
中的load()方法一样,可以用来载入外部的XML文件,如oXmlDoc.load("test.xml");loadXML()方法则
接受表示XML文本的字符串,将它们解析成XML文档,如oXmlDoc。loadXML("<root></root>")
MSXML提供的异步回调事件是onreadystatechange事件在异步模式下,当XML DOM对象的readyState发生时
,这个事件被触发。0准备载入,1正在载入,2载入完成,3载入完成并可用,但有一部分数据也许不可用
4完全载入,完成可用
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Example 17.1 MSXML操作XML文档</title>

</head>

<script language="JavaScript">

<!--

//

//      XML Data Traversal                //

//      (c) 2003 Premshree Pillai            //

//      http://www.qiksearch.com           //

//      http://premshree.resource-locator.com  //

//      Email : qiksearch@rediffmail.com     //

//



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

//从文件中读取xml文档

function loadXML(xmlFile) {

		//设置读取方式为同步

        xmlDoc.async="false";	

		//注册onreadystatechange事件

        xmlDoc.onreadystatechange=verify;

		//从文件中读取

        xmlDoc.load(xmlFile);

}

//检查文档的状态是否为完全载入

function verify() { 

		//虽然是同步方式,其实这个事件仍然会被触发

        if(xmlDoc.readyState!=4)

                return false; 

}

//开始遍历文档结构树

function traverse(tree) {

		//如果有子节点,遍历

        if(tree.hasChildNodes()) {

				//生成以HTML显示的节点信息

                frames[0].document.write('<ul><li>');

                frames[0].document.write('<b>'+tree.tagName+' : </b>');

                var nodes=tree.childNodes.length;

				//对子节点递归

                for(var i=0; i<tree.childNodes.length; i++)

                        traverse(tree.childNodes(i));

                frames[0].document.write('</li></ul>');

        }

        else

                frames[0].document.write(tree.text);

}

//根据文件名初始化xml文档并进行遍历

function initTraverse(file) {

        loadXML(file);	//载入文件

        var doc=xmlDoc.documentElement;

        traverse(doc);	//对文档结构树进行遍历

}

-->

</script>

<body>

	<input id="_xmlFile" type="file" style="width:360px"></input>

	<button onClick="initTraverse(_xmlFile.value)">载入</button></br>

	<iframe width="400px" height="450px"></iframe>

</body>

</html>
 
XML DOM错误处理
oXmlDoc.async = false;

oXmlDoc.load("error.xml");

//0表示没有错误

if (oXmlDoc.parsrError != 0)

{

var oError = oXmlDoc.parseError;



alert("An error occurred:/n 错误代码:“

+oError.errorCode + "/n"

+"行数" + oError .line + "/n"

+ "列数" + oError 。linepos  + ”/n“

+"原因" + oError .reason);

}

XML DOM 操作XML文档
xmlDomObject对象的documentElement属性指向XML文档的根,它的childNodes属性
引用一个XMLDOMNodelist对象,它是儿子节点的列表,通过XMLDOMNodelist对象的item()
方法可以获得制定位置商的节点(每个节点对应一个XMLDOMDode对象),这个方法的唯一参数
是一个整数,表示要获取的节点在列表中的索引,如:
var doc  = xmlDomObject.documentElement;

for(var i = 0;i<doc.chindNodes.length;i++)

{alert(doc.childNodes.item(i).tagName);}
XMLDOMNode的getElementByTagName()方法用法:
var doc  = xmlDomObject.documentElement;
var books = doc.getElementByTagName("book");
for(var i = 0;i < books.length; i++)
{
alert(books[i].getAttribute("author");)
}
 
 




 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值