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

原创 2006年05月29日 14:47:00

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

cdata xml与json的互转

package xml;import java.io.IOException; import java.io.StringReader; import java.util.HashMap; impor...
  • LONG729564606
  • LONG729564606
  • 2016年09月11日 17:05
  • 1515

js 中//<![CDATA[ 意义

CDATA内部所有东西都会被解析器忽略,加入文本中包含了大量CDATA 区段开始于 "": 为何用这个? XHTML第二个改变是使用CDATA段,XML中的CDATA段用于声明不应被解析为标签的文...
  • lijiaojiao123123
  • lijiaojiao123123
  • 2015年04月09日 08:06
  • 4553

js读取xml的<![CDATA[]]>存放内容

通过创建xmldoc来处理ajax返回的xml格式的内容
  • Tracy_frog
  • Tracy_frog
  • 2017年08月11日 13:10
  • 634

javascript <![CDATA[的web使用简单说明

html、javascript会涉及到三个解析器,html解析器、xml解析器、javascript解析器。那么好了,问题来了,以上代码经常混编在一起,各自有各自的规则,终究会有冲突的,如下就是冲突。...
  • zhengzhiyujl
  • zhengzhiyujl
  • 2016年03月05日 14:56
  • 919

使用org.w3c.dom.*进行XML文件的解析和创建(包括Cdata的解析)

最近在项目中使用org.w3c.dom对xml文件进行解析,该包对于较小的xml文件的操作非常简便,推荐大家在使用。...
  • zhujiongming
  • zhujiongming
  • 2013年11月21日 14:58
  • 2963

python_xml parse 解析cdatasection数据

from xml.dom.minidom import * implementation = DOMImplementation() print "Core:%s" % implementat...
  • xiaocaiju
  • xiaocaiju
  • 2012年04月11日 16:56
  • 1283

JavaScript HTML DOM节点类型之Node类型介绍

JavaScript中所有HTML DOM节点类型都继承自Node类型,因此所有类型的节点都有一些相同的属性和方法。Node接口是DOM1级中定义的一个接口,在JavaScript中Node接口被实现...
  • bfboys
  • bfboys
  • 2017年01月11日 22:32
  • 1308

JavaScript DOM详解

DOM的获取Element的方法和属性: getElementById(id) getElementsByTagName(tag) getElementsByClassName(class) ...
  • johnny901114
  • johnny901114
  • 2016年10月03日 11:45
  • 1818

javascript中12种DOM节点类型概述

javascript中12种DOM节点类型概述
  • qingqingzijinxin
  • qingqingzijinxin
  • 2016年08月18日 20:42
  • 691

Dom解析XML

DOM(Document Object Model):W3C组织推荐的处理XML的标准接口.  http://www.w3.org/DOM/DOMTR.html  DOM特点:首先将整...
  • u013516966
  • u013516966
  • 2015年01月29日 02:41
  • 916
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript生成/解析dom的CDATA类型的字段
举报原因:
原因补充:

(最多只允许输入30个字)