当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript生成/解析dom的CDATA类型的字段的代码

Javascript
编辑浪子版表单验证类
JavaScript脚本语言在网页中的简单应用
getElementById在任意一款浏览器中都可以用吗的疑问回复
“增强js程序代码的健壮性”之我见大量示例代码
javascript之卸载鼠标事件的代码
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
javascript操作文本框readOnly
用javascript实现gb2312转utf-8的脚本
网站被黑的假象--ARP欺骗之页面中加入一段js
(JS实现)MapBar中坐标的加密和解密的脚本
几款极品的javascript压缩混淆工具
[原创]由亿起发(eqifa.com)的页面发现顶部的http://16a.us/8.js想到的js解密
JavaScript中的new的使用方法与注意事项
分别用两个函数实现的菜单
非常不错的模拟打字效果,目前仅支持纯文本、BR标签、和P标签
用javascript实现的支持lrc歌词的播放器
JS加ASP二级域名转向的代码
效果直逼flash的Div+Css+Js菜单
input之怎么清除默认值
用xhtml+css写的相册自适应 - 类似九宫格[兼容 ff ie6 ie7 opear ]

Javascript 中的 javascript生成/解析dom的CDATA类型的字段的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 152 ::
收藏到网摘: n/a

两段demo代码如下(for ie only):
<script type="text/javascript">
//demo1
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
var root;
var CDATASection;
xmlDoc.async = false;
xmlDoc.loadXML("<a/>");
root = xmlDoc.documentElement;
CDATASection = xmlDoc.createCDATASection("Hello World!");
root.appendChild(CDATASection);
b=xmlDoc.createElement("Test")
b.text="hahahahaha"
root.appendChild(b);
alert(root.xml);
for(i =0;i<root.childNodes.length;i++)
{
if(root.childNodes[i].nodeType==4)
alert(root.childNodes[i].nodeValue)
}
</script>
<script type="text/javascript">
//demo2
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = false;
xmlDoc.loadXML("<a><![CDATA[aaaaaaaaaaaaaaaaaaaaa]]></a>");
root = xmlDoc.documentElement;
for(i =0;i<root.childNodes.length;i++)
{
if(root.childNodes[i].nodeType==4)
alert(root.childNodes[i].nodeValue)
}
</script>
//demo3( for firefox)
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
< HEAD >
< TITLE > 使firefox对xml的处理兼容IE的selectSingleNode selectNodes方法 </ TITLE >
< META NAME ="Author" CONTENT ="emu" >
< META NAME ="Keywords" CONTENT ="firefox IE selectSingleNode selectNodes" >
< META NAME ="Description" CONTENT ="使firefox可以支持selectSingleNode selectNodes方法" >
< SCRIPT LANGUAGE ="JavaScript" >
<!--
var isIE = !! document.all;
function parseXML(st){
if (isIE){
var result = new ActiveXObject( " microsoft.XMLDOM " );
result.loadXML(st);
} else {
var parser = new DOMParser();
var result = parser.parseFromString(st, " text/xml " );
}
return result;
}
if ( ! isIE){
var ex;
XMLDocument.prototype.__proto__.__defineGetter__( " xml " , function (){
try {
return new XMLSerializer().serializeToString( this );
} catch (ex){
var d = document.createElement( " div " );
d.appendChild( this .cloneNode( true ));
return d.innerHTML;
}
});
Element.prototype.__proto__.__defineGetter__( " xml " , function (){
try {
return new XMLSerializer().serializeToString( this );
} catch (ex){
var d = document.createElement( " div " );
d.appendChild( this .cloneNode( true ));
return d.innerHTML;
}
});
XMLDocument.prototype.__proto__.__defineGetter__( " text " , function (){
return this .firstChild.textContent
});
Element.prototype.__proto__.__defineGetter__( " text " , function (){
return this .textContent
});


XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath){
var x = this .selectNodes(xpath)
if ( ! x || x.length < 1 ) return null ;
return x[ 0 ];
}
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this .ownerDocument == null ?
this .documentElement : this .ownerDocument.documentElement);
var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
}
}
var x = parseXML( " <people> <person first-name=\ " eric\ " middle-initial=\ " H\ " last-name=\ " jung\ " > <address street=\ " 321 south st\ " city=\ " denver\ " state=\ " co\ " country=\ " usa\ " /> <address street=\ " 123 main st\ " city=\ " arlington\ " state=\ " ma\ " country=\ " usa\ " /> </person> <person first-name=\ " jed\ " last-name=\ " brown\ " > <address street=\ " 321 north st\ " city=\ " atlanta\ " state=\ " ga\ " country=\ " usa\ " /> <address street=\ " 123 west st\ " city=\ " seattle\ " state=\ " wa\ " country=\ " usa\ " /> <address street=\ " 321 south avenue\ " city=\ " denver\ " state=\ " co\ " country=\ " usa\ " /> </person></people> " );
alert( " 搜索所有人的姓氏(last-name) " )
var results = x.selectNodes( " //person/@last-name " );
for ( var i = 0 ; i < results.length;i ++ )
alert( " Person # " + i + " has the last name " + results[i].nodeValue);
alert( " 搜索第二个人 " );
// IE是以0为下标基数的,而不是1
if ( ! document.all)
results = x.selectSingleNode( " /people/person[2] " );
else
results = x.selectSingleNode( " /people/person[1] " );
alert(results.xml)
alert( " 获得住址在donver街上的人 " );
results = x.selectNodes( " //person[address/@city='denver'] " );
for ( var i = 0 ; i < results.length;i ++ )alert(results[i].xml)
if ( ! document.all){
// 获得所有街名中带south的地址
results = x.selectNodes( " //address[contains(@street, 'south')] " );
alert(results[ 0 ].xml);
} else {
alert( " IE不支持 //address[contains(@street, 'south')] 这种查询方式 " )
}
// -->
</ SCRIPT >
</ HEAD >
< BODY >
</ BODY >
</ HTML >
//demo4( cross brower)
http://kb.mozillazine.org/XPath