JAVASCRIPT中使用DOM操作XML文档

None.gif < script language = " JavaScript " >
None.gif
<!--
None.gif
var  doc  =   new  ActiveXObject( " Msxml2.DOMDocument " );  // ie5.5+,CreateObject("Microsoft.XMLDOM") 
None.gif

None.gif
None.gif
// 加载文档
None.gif//
doc.load("b.xml");
None.gif

None.gif
// 创建文件头
None.gif
var  p  =  doc.createProcessingInstruction( " xml " , " version='1.0'  encoding='gb2312' " );
None.gif
None.gif    
// 添加文件头
None.gif
    doc.appendChild(p);
None.gif
None.gif
// 用于直接加载时获得根接点
None.gif//
var root = doc.documentElement;
None.gif

None.gif
// 两种方式创建根接点
None.gif//
    var root = doc.createElement("students");
None.gif
     var  root  =  doc.createNode( 1 , " students " , "" );
None.gif
None.gif    
// 创建子接点
None.gif
     var  n  =  doc.createNode( 1 , " ttyp " , "" );
None.gif
None.gif        
// 指定子接点文本
None.gif
         // n.text = " this is a test";
None.gif
    
None.gif    
// 创建孙接点
None.gif
     var  o  =  doc.createElement( " sex " );
None.gif        o.text 
=   " " ;     // 指定其文本
None.gif

None.gif    
// 创建属性
None.gif
     var  r  =  doc.createAttribute( " id " );
None.gif        r.value
= " test " ;
None.gif
None.gif        
// 添加属性
None.gif
        n.setAttributeNode(r);
None.gif
None.gif    
// 创建第二个属性    
None.gif
     var  r1  =  doc.createAttribute( " class " );
None.gif        r1.value
= " tt " ;
None.gif        
None.gif        
// 添加属性
None.gif
        n.setAttributeNode(r1);
None.gif
None.gif        
// 删除第二个属性
None.gif
        n.removeAttribute( " class " );
None.gif
None.gif        
// 添加孙接点
None.gif
        n.appendChild(o);
None.gif
None.gif        
// 添加文本接点
None.gif
        n.appendChild(doc.createTextNode( " this is a text node. " ));
None.gif
None.gif        
// 添加注释
None.gif
        n.appendChild(doc.createComment( " this is a comment\n " ));
None.gif    
None.gif        
// 添加子接点
None.gif
        root.appendChild(n);
None.gif    
None.gif    
// 复制接点
None.gif
     var  m  =  n.cloneNode( true );
None.gif
None.gif        root.appendChild(m);
None.gif        
None.gif        
// 删除接点
None.gif
        root.removeChild(root.childNodes( 0 ));
None.gif
None.gif    
// 创建数据段
None.gif
     var  c  =  doc.createCDATASection( " this is a cdata " );
None.gif        c.text 
=   " hi,cdata " ;
None.gif        
// 添加数据段
None.gif
        root.appendChild(c);
None.gif    
None.gif    
// 添加根接点
None.gif
    doc.appendChild(root);
None.gif
None.gif    
// 查找接点
None.gif
     var  a  =  doc.getElementsByTagName( " ttyp " );
None.gif    
// var a = doc.selectNodes("//ttyp");
None.gif

None.gif    
// 显示改接点的属性
None.gif
     for ( var  i =   0 ;i < a.length;i ++ )
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        alert(a[i].xml);
InBlock.gif        
for ( var  j = 0 ;j < a[i].attributes.length;j ++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif {
InBlock.gif            alert(a[i].attributes[j].name);
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
None.gif    
// 修改节点,利用XPATH定位节点
None.gif
     var  b  =  doc.selectSingleNode( " //ttyp/sex " );
None.gif    b.text 
=   " " ;
None.gif
None.gif    
// alert(doc.xml);
None.gif

None.gif    
// XML保存(需要在服务端,客户端用FSO)
None.gif
     // doc.save();
None.gif
    
None.gif    
// 查看根接点XML
None.gif
     if (n)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        alert(n.ownerDocument.xml);
ExpandedBlockEnd.gif    }

None.gif
None.gif
// -->
None.gif
</ script >


    在 DOM 眼中, HTML XML 一样是一种树形结构的文档, <html> 是根( root )节点, <head> <title > <body> <html> 的子( children )节点,互相之间是兄弟( sibling )节点; <body> 下面才是子节点 <table> <span> <p> 等等。如下图:
HTML文档结构.jpg
    这个是不是跟 XML 的结构有点相似呢。不同的是, HTML 文档的树形主要包含表示元素、标记的节点和表示文本串的节点。 <o:p> </o:p>


 HTML
文档的节点

DOM 下, HTML 文档各个节点被视为各种类型的 Node 对象。每个 Node 对象都有自己的属性和方法,利用这些属性和方法可以遍历整个文档树。由于 HTML 文档的复杂性, DOM 定义了 nodeType 来表示节点的类型。这里列出 Node 常用的几种节点类型:

接口

nodeType 常量

nodeType

备注

Element

Node.ELEMENT_NODE

1

元素节点

Text

Node.TEXT_NODE

3

文本节点

Document

Node.DOCUMENT_NODE

9

document

Comment

Node.COMMENT_NODE

8

注释的文本

DocumentFragment

Node.DOCUMENT_FRAGMENT_NODE

11

document 片断

Attr

Node.ATTRIBUTE_NODE

2

节点属性

DOM 树的根节点是个 Document 对象,该对象的 documentElement 属性引用表示文档根元素的 Element 对象(对于 HTML 文档,这个就是 <html> 标记)。 Javascript 操作 HTML 文档的时候, document 即指向整个文档, <body><table> 等节点类型即为 ElementComment 类型的节点则是指文档的注释。具体节点类型的含义,请参考《 Javascript 权威指南》,在此不赘述。

Document 定义的方法大多数是生产型方法,主要用于创建可以插入文档中的各种类型的节点。常用的 Document 方法有:

方法

描述

createAttribute()

用指定的名字创建新的 Attr 节点。

createComment()

用指定的字符串创建新的 Comment 节点。

createElement()

用指定的标记名创建新的 Element 节点。

createTextNode()

用指定的文本创建新的 TextNode 节点。

getElementById()

返回文档中具有指定 id 属性的 Element 节点。

getElementsByTagName()

返回文档中具有指定标记名的所有 Element 节点。

对于 Element 节点,可以通过调用 getAttribute()setAttribute()removeAttribute() 方法来查询、设置或者删除一个 Element 节点的性质,比如 <table> 标记的 border 属性。下面列出 Element 常用的属性:

属性

描述

tagName

元素的标记名称,比如 <p> 元素为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值