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


Posted in Javascript onApril 22, 2007

两段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

Javascript 相关文章推荐
js获取单选按钮的数据
Nov 27 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 Javascript
XML+XSL 与 HTML 两种方案的结合
Apr 22 #Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 #Javascript
JS Timing
Apr 21 #Javascript
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 #Javascript
JS 建立对象的方法
Apr 21 #Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 #Javascript
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
Apr 20 #Javascript
You might like
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python API len函数操作过程解析
2020/03/05 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
STP的判定过程
2012/10/01 面试题
2014年平安建设工作总结
2014/11/19 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python