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

2016-02-19 09:55 11 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的javascript生成/解析dom的CDATA类型的字段的代码,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - Web开发 】

两段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;iroot.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;iroot.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

来源:http://www.tulaoshi.com/n/20160219/1592683.html

延伸阅读
标签: Web开发
第一个:  Untitled Document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]   第二个: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。 由MySQL支持的列类型列在下...
例如: 修改(列名前 要有column关键字) ALTER TABLE [USER] ALTER column [NAME] varchar(35) null 新增 ALTER TABLE [USER] ADD [PRICE]     numeric(18, 8) NULL  DEFAULT 0   通过更改、添加、除去列和约...
标签: Web开发
       对结点的属性赋值   一旦创建了结点,还要对其属性赋值,如独立的标识符,或者特性值。你要用到SetAttribute方法。该方法接收两个参数— 属性名和属性值。例如,下列代码创建了属性名SHIPPING_DATASOURCE 和属性值NORTH_ATLANTIC_SHIPPING:      objXMLroot.SetAttribute...
标签: Web开发
在ASP下使用XML DOM    要生成前面例子中的XML文档,我们可以用ASP来生成。我们将创建一个简单的ASP页,让你只需点击按钮,就可创建XML文档。为了完成这件事情,我们用了带有Windows脚本构件的ASP网页,由它来生成XML。我们将用Windows Script Component Wizard来生成初始代码。(如果你没有wizard,可到微软的脚本栏目中去寻找。) ...

经验教程

981

收藏

55
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部