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

2016-02-19 09:55 6 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

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

延伸阅读
标签: Web开发
在ASP下使用XML DOM    要生成前面例子中的XML文档,我们可以用ASP来生成。我们将创建一个简单的ASP页,让你只需点击按钮,就可创建XML文档。为了完成这件事情,我们用了带有Windows脚本构件的ASP网页,由它来生成XML。我们将用Windows Script Component Wizard来生成初始代码。(如果你没有wizard,可到微软的脚本栏目中去寻找。) ...
标签: Web开发
构造ASP网页         为了创建ASP网页,打开你所熟悉的HTML 编辑器,输入列表B中的代码。确保 Window.Navigate行指向合适的文件夹。要了解其是如何工作的,在Internet Explorer中打开该页。一旦打开后,就会出现一个信息,告诉你XML已经创建了成功,并出现一个 Show 按钮,点击该按钮,IE显示出图E中的XML文档...
标签: Web开发
一个项目需要显示QQ在线状态,就按照需要简单写了一小段代码,放上来共享一下,没写成函数有需要的朋友自行修改下应该很简单,另外这个状态显示未加任何限制,或许会碰到所谓的骚扰,腾讯官方的状态代码已经加上会话权限设置了,我这个图省事未加会话权限设置。可以保存到独立js文件中调用,还算比较简单方便:) 程序代码 script type="text/...
标签: Web开发
Javascript文档生成是比较头疼的问题,不过现在已经有开源的工具可以使用——JsDoc。 其官方站点地址:http://jsdoc.sourceforge.net/ Release版的下载地址是:http://sourceforge.net/projects/jsdoc JsDoc是根据Javascript代码中的注释生成相应的帮助文档,它定义了一套注释标签规范。因此在编写Javascript代码时,要根据...
标签: Web开发
创建结点      XMLDOMDocument 对象提供了创建结点或者XMLDOMNode的两种方法: CreateElement 和CreateNode。选择其中哪一种方法,取决于你需要结点提供信息量的多少。当你使用CreateElement 方法时,只要提供结点名称,如      Set objXMLroot = objXMLdoc _       .Creat...

经验教程

621

收藏

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