2006年12月27日星期三

关于 Javascript 和 XML DOM

前段时间做了一些Javascript操作XML文档的工作,对在IE浏览器中的Javascript操作XML有一些心得。不过这些只适合在IE浏览器中使用,如果说非要支持跨浏览器(如:Firefox)操作XML。所有的XML DOM都是遵循W3C的XML DOM接口规范。在Javascript中判断当前浏览器类型,有选择的使用当前浏览器所支持的XML DOM 对象(注:在IE浏览器中Microsoft推出的是ActiveX控件,所以一般使用Msxml2.DOMDocument.和该版本的以上版本,在Firefox浏览器中Mozilla推出的是document.implementation对象createDocument方法),程序得到XML DOM对象以后使用W3C规范下的属性和方法实现跨浏览器操作XML。

new ActiveXObject("Msxml2.DOMDocument")
得到一个DOM对象,DOM对象的load()方法、loadXML()方法用来获取XML数据。给load方法一个相对或绝对的路径字符串,给loadXML()方法一个XML文档内容的字符串(这个字符串是我们预定义好的或者使用FOS对象读取文件后把字符串变量传给此方法。注:XML DOM对象都用dom表示)。

dom.parseError.errorCode
当使用load()和loadXML()主法后,判断读取的XML类容的正确和完整性,如果不正确则返回0.


doc.documentElement
得到当前DOM对象的root节点,也就是主节点。

doc.documentElement.childNodes
得到当前主节点的所有子节点集合。

doc.createElement()
创造一个节点,如果root节点使用appendChild()方法,则成为root节点的子节点,如果root的子节点使用appendChild()方法,则成为root节点的一个孙节点。

doc.appendChild()
添加一个节点成为root的子节点。添加的节点对象必须是doc.createElement()方法创造出来的。

doc.removeChild()
删除一个节点,此方法为删除root的一个子节点。

doc.getElementsByTagName()
根据元素名称来查找节点,返回的是一个节点集合。

doc.selectSingleNode()
根据XPATH来定位节点,XPATTH是W3C是规范

doc.xml
得到当前dom中的xml文档字符串,此字符串是整个xml文件的字符内容。

doc.save()
保存xml文档。因为"Msxml2.DOMDocument"是一个ActiveX控件,所以此控件可以在IE浏览器下的Javascript中运行,也可以在ASP或都VB中运用。但javascript是在客户端运行,因此存在不安全因素(相对于客户端),所以此方法在javascript使用不了。替代方案为使用FSO的读写功在Javascript中实现写入文件。

关于FSO (FileSystemObject)
FileSystemObject对象提供对计算机文件系统的访问,它允许我们在代码内操作文本文件、文件夹及驱动器。它是脚本运行期库提供的对象之一,对于服务器ASP页面内的VBScript、JScript和Javascript都有效。

new ActiveXObject("Scripting.FileSystemObject")
在IE中Javascript获得FSO对象使用此方法,FOS对象可以读定二进制文件和文本文件并且可以指定文本文件的编码(对象不能指定UTF-8编码)

没有评论: