DOM对象简单使用

很久没有真正的写东西了..忙着找工作..现在工作有个着落了..又有心思研究.学习新的东西了

这篇为以后学ajax打基础的


生成DOM文档对象的方法
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
  生成XML文档对象xmlDoc,xmlDoc中包含XML文档中所有元素和节点

 xmlDoc.async=false;
装载XML文档完毕后才开始处理下一步骤

xmlDoc.load("1.xml");
将XML文档装载到文档对象中,在内存中形成文档对象树

DOM对象

1.IXMLDOMDocument/DOMDocument
2.IXMLDOMNode
3.IXMLDOMNodeList
4.IXMLDOMParseError
5.IXMLDOMAttribute
6.IXMLDOMDocumentType

1.IXMLDOMDocument/DOMDocument
表示DOM树的最顶层节点
属性
async--是否可以异步下载(可读写属性)
attributes--返回节点的属性列表
baseName--返回节点的标记名称
childNodes--子节点列表
documentElement--返回文档的根元素(可读写属性)
方法
appendChild(在当前节点的最后增加一个新的子节点)

createNode(根据条件生成一个新节点)
createnode(type,name,namespaceURL)

IXMLDOMDocument/DOMDocument示例


var  oNodeMap,str,oList,item;
        
var  xmlDoc = new  ActiveXObject( " Msxml2.DOMDocument.4.0 " );
        xmlDoc.async
= false ;
        xmlDoc.load(
" candidate.xml " );
        
if (xmlDoc.parseError != 0 )
            document.writeln(xmlDoc.parseError.reason
+ " <br> " );
        
else
        
{
            oNodeMap
= xmlDoc.documentElement.attributes;
            document.write(oNodeMap.length
+ " <br> " );
        str
= xmlDoc.documentElement.childNodes[ 1 ].baseName;
            document.write(str
+ " <br> " );
            oList
= xmlDoc.documentElement.childNodes;
            
for ( var  i = 0 ;i < oList.length;i ++ )
                document.write(oList[i].xml
+ " <br> " );
        }



< script language = " javascript " >
        
var  xmlDoc = new  ActiveXObject( " Msxml2.DOMDocument.4.0 " );
        xmlDoc.async
= false ;
        xmlDoc.load(
" candidate.xml " );
        
var  root = xmlDoc.documentElement;
        document.write(root.xml);
        document.write(
" <br>--------------------------<br> " );
        
var  node = xmlDoc.createNode( 1 , " 创建节点 " , "" );
        node.text
= " 这是新创建得节点 " ;
        root.appendChild(node);
        window.alert(root.xml);
        document.write(root.xml);
    
</ script >


IXMLDOMNode

属性
lastChild--返回最后一个子节点
nextSibling--指向同一层的下一个兄弟节点
xml--用XML格式表现该节点和所有子节点的内容
方法
selectNodes--根据匹配模式操作来返回符合要求的节点集合
selectSingleNode--根据匹配模式操作来返回符合要求的第一个节点
IXMLDOMNode是DOM的基本对象,所有节点都可以看作是一个IXMLDOMNode对象,所有其它DOM对象接口都是继承它的属性和方法。

< html >
   
< body >
      
< script  language ="javascript" >
        
var  xmlDoc = new  ActiveXObject( " Msxml2.DOMDocument.4.0 " );
        xmlDoc.async
= false ;
        xmlDoc.load(
" candidate.xml " );
        
var  root = xmlDoc.documentElement;
        
var  node = root.lastChild;
        window.alert(node.xml);
        
var  firstNode = root.childNodes[ 0 ];
        
var  nextNode = firstNode.nextSibling;
        window.alert(nextNode.xml);
    
</ script >
   
</ body >
</ html >

< html >
   
< body >
      
< script  language ="javascript" >
        
var  xmlDoc = new  ActiveXObject( " Msxml2.DOMDocument.4.0 " );
        xmlDoc.async
= false ;
        xmlDoc.load(
" candidate.xml " );
        
var  root = xmlDoc.documentElement;
        
var  node = root.selectNodes( " PERSON/NAME " );
        window.alert(node.length);
    
</ script >
   
</ body >
</ html >


IXMLDOMNodeList

属性
length--接口对象中包含的节点数量。
方法
nextNode--返回节点集合中下一个节点。
节点的集合
IXMLDOMParseError
属性
line--错误所在行号
linepos--错误在行中的位置
reason--发生错误的原因
srcText--错误行文本
用此接口捕获XML文档中存在的错误(包括XML结构完整错误及有效性错误)

IXMLDOMParseError示例

< html >
   
< body >
      
< script  language ="javascript" >
        
var  xmlDoc = new  ActiveXObject( " Msxml2.DOMDocument.4.0 " );
        xmlDoc.async
= false ;
        xmlDoc.load(
" errorxml.xml " );
        
if (xmlDoc.parseError.errorCode != 0 )
        
{
    document.writeln(
" 错误所在的行号: "   +  xmlDoc.parseError.line  +   " <br> " );
    document.writeln(
" 错误所在的列号: "   +  xmlDoc.parseError.linepos  +   " <br> " );
    document.writeln(
" 错误原因: "   +  xmlDoc.parseError.reason  +   " <br> " );
    document.writeln(
" 错误行文本: "   +  xmlDoc.parseError.srcText  +   " <br> " );
        }

    
</ script >
   
</ body >
</ html >


IXMLDOMAttribute
表示元素的相关属性
属性
nodeType--返回节点类型
ownerDocument--返回该节点的根节点
text--返回节点的文本和子节点树
value--返回属性的值
xml--返回当前节点及其所有子节点的内容
方法
appendChild
selectSingleNode
IDOMAttribute示例

< html >
< body >
   
< script  language ="javascript" >
        
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
        xmlDoc.async
=false;
        xmlDoc.load(
"candidate.xml");
        
var node=xmlDoc.documentElement.childNodes[0];
document.write(
"节点类型:"+node.nodeType+"<br>");
document.write(
"根元素节点名称:" +node.ownerDocument.documentElement.tagName + "<br>");
document.write (
"当前节点的属性值:" + node.attributes[0].value + "<br>");
document.write(
"当前节点及其子节点所包含的文本:" + node.text + "<br>");
    
</ script >  
</ body >
</ html >

IXMLDOMDocumentType

属性
entities--返回实体集,包括内部和外部DTD定义的
name--返回文档类型的名字
nodeTypeString--返回节点类型的字符串表示
方法
removeChild--从返回的子节点集中删除特定子节点,并返回它
replaceChild--从返回的子节点集中用新节点替换特定老节点


IXMLDOMDocumentType示例

< html >
    
< body >
    
< script  language ="javascript" >
        
var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
        xmlDoc.async
=false;
        xmlDoc.load(
"candidate.xml");
        
var root=xmlDoc.documentElement;
        
var node=root.childNodes[1];
        window.alert(
"当前节点的类型为:" + node.childNodes[0].nodeTypeString);
        
var element=xmlDoc.createElement("Resume");
        element.text
="添加的新元素";
        root.childNodes[
1].replaceChild(element,node.childNodes[0]);
        window.alert(node.xml);
    
</ script >
   
</ body >
</ html >


上示例用到的XML文件
<? xml version="1.0" ?>
< PEOPLE   id ="fdsfsd"   ds ="sdfsd" >
    
< PERSON  PERSONID ="E01" >
        
< NAME > Tony Blair </ NAME >
        
< ADDRESS > 10 Downing Street, London, UK </ ADDRESS >
        
< TEL > (061) 98765 </ TEL >< FAX > (061) 98765 </ FAX >
        
< EMAIL > blair@everywhere.com </ EMAIL >
    
</ PERSON >
    
< PERSON  PERSONID ="E02" >
        
< NAME > Bill Clinton </ NAME >
        
< ADDRESS > White House, USA </ ADDRESS >
        
< TEL > (001) 6400 98765 </ TEL >< FAX > (001) 6400 98765 </ FAX >
        
< EMAIL > bill@everywhere.com </ EMAIL >
    
</ PERSON >
    
< PERSON  PERSONID ="E03" >
        
< NAME > Tom Cruise </ NAME >
        
< ADDRESS > 57 Jumbo Street, New York, USA </ ADDRESS >
        
< TEL > (001) 4500 67859 </ TEL >< FAX > (001) 4500 67859 </ FAX >
        
< EMAIL > cruise@everywhere.com </ EMAIL >
    
</ PERSON >
    
< PERSON  PERSONID ="E04" >
        
< NAME > Linda Goodman </ NAME >
        
< ADDRESS > 78 Crax Lane, London, UK </ ADDRESS >
        
< TEL > (061) 54 56789 </ TEL >< FAX > (061) 54 56789 </ FAX >
        
< EMAIL > linda@everywhere.com </ EMAIL >
    
</ PERSON >
</ PEOPLE >      
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值