ASP XML

      ASP及SQL 2004-5-26 11:39
学习笔记:
===================================
set dom=CreateObject("microsoft.xmldom")
dom.async=false
dom.load "c:\user.xml"
==============================
'取得根节点
set rootNode=dom.documentElement
=========================================
getElementById
===========================================
'根据节点名字取得节点集合
set nodelist=dom.getElementsByTagName("page")
length=nodelist.length
for i=0 to length-1
set node=nodelist.item(i)
msgBox node.xml
next
==================================
set book1=rootNode.childNodes(1)
book1.ownerDocument 返回Document节点,指向XML文档本身
book1.previousSibling 前一个节点
book1.parentNode 父节点
book1.firstChild 第一个子节点
book1.lastChild 最后一个子节点
book1.childNodes 子节点集合
=======================================
添加节点
set node=rootNode.childNodes.item(0)
set newNode=myDocument.createElement("publisher")
set rtnNode=node.insertBefore(newNode,node.lastChild)
set textNode=myDocument.createTextNode("人民邮电出版社")
node.childNodes.item(1).appendChild(textNode)
============================
删除节点
set node=root.childNodes.item(0)
set oldNode=node.removeChild(node.childNodes.item(4))
====================================
修改节点
set node=root.childNodes.item(0)
node.nodevalue="158"
=======================================
106页 常用DOM的方法
createAttribute(属性的名字) 创建一个属性节点。然后可以用setAttributeNode方法把该属性设置为某个元素的属性
createCDATASection(内容) 创建一个CDATA节点。
createMessage(内容) 创建一个注释节点,值就是参数内容
createElement(名字) 创建元素节点
createEntityReference(名字) 创建一个实体引用节点,如果被引用的实体是已知的,那么该实体引用节点和相应的实体节点有同样的子节点集
createProcessingInstruction(处理指令的目标部分,处理指令的数据部分) 创建一个具有指定名字和数据的处理指令节点
createTextNode(内容) 创建一个具有指定内容的文本节点
=============================
Node的常用属性,P108
attributes
childNodes 子节点的集合
firstChild 第一个子节点
lastChild 最后一个子节点
previousSibling 当前节点的前驱节点
nextSibling 当前节点的后继节点
nodeName 当前节点的名字
nodeType 节点类型
nodevalue 节点的值
parentNodes 父节点
========================================
Node方法 p109
appendChild(newChild) 添加到所有子节点的最后,返回添加的节点
cloneNode(boolean deep) 复制当前节点,复制产生的节点没有父节点,返回复制的节点
hasChildNodes 无参数,判断是否有子节点
createElement 创建元素节点
insertBefore(newChild,refChild) 把节点newChild插入到当前节点的子节点refChild之前。返回插入的节点
removeChild(oldChild) 把子节点oldChild删除,并返回oldChild节点。
replaceChild(newChild,oldChild) 替换节点,返回被删除的节点
===============================================================
NodeList
是动态的,对文档的改变会直接反映到相关的NodeList对象中。
属性:
length
Item(0)-Item(nodeList.length-1)
================================================================
NamedNodeMap
包含的节点是无序的。表示节点和唯一名字的对应关系。
属性length
方法:
getNamedItem(name) 返回给定名称的节点
item(0...)
removeNamedItem(name) 删除给定名称的节点
setNamedItem(name) 把给定节点名的节点添加到当前节点集中,如果改名字节点已经存在,替换
========================================================================================
ASP通过XMLDom在服务器端操作XML文件的主要方法和实现

对于小数据量,xml文件在检索更新上于ACCESS有很多优势。

我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。(http://stone.yesku.net)

下面说一下创建,查询,修改等对xml操作的主要方法

'创建DOM对象
set objDom=server.CreateObject("MicroSoft.XMLDom")

'取得xml数据
'方法1 取得xml文件的xml数据
objDom.load("c:\test.xml")
'方法2 取得xml数据串的数据
objDom.loadxml("")

'创建一个节点对象
Set Newnode=objDom.CreateElement("people")
'给这个节点赴值
Newnode.Text="人"
' 给这个节点添加属性
Set NewAttribute=objDom.CreateNode("attribute","name","")
NewAttribute.Text= "张三"
Newnode.SetAttributeNode NewAttribute
'给这个节点添加子节点
Set NewnodeChild=objDom.CreateElement("address")
Newnode.appendChild NewnodeChild
'保存这个节点对象
objDom.appendChild Newnode
objDom.save("c:\test.xml")

'查找一个节点对象
set objtofind=objdom.documentElement.SelectSingleNode("//people/man")
'取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml
nodename=objtofind.nodename
nodevalue=objtofind.text
objtofind.GetAttributeNode("name").Nodevalue '属性名为name的属性值

'取出一个属性节点对象
set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name")
'取出这个节点的属性名,属性值
nodeattrname=objattrtofind.nodename
nodeattrvalue=objattrtofind.nodevalue

'删除一个节点对象
set objnode=objdom.documentElement.SelectSingleNode("//people/man") '要删除的节点
set objparentnode=objdom.documentElement.SelectSingleNode("//people") '要删除的节点的父节点
objparentnode.removeChild objnode

'取出一个节点的字节点集合
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes
遍历这个集合
方法1
for each element in objnodes
response.write element.nodename 字节点名
response.write element.text 字节点值
next
方法2
domlength=objnodes.length
for i = 0 to domlength-1
response.write objnodes.childnodes(i).nodename 字节点名
response.write objnodes.childnodes(i).text 字节点值
next

'取出一个节点的属性集合
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes
遍历这个集合
for each element in objnodes
response.write element.nodename 属性名
response.write element.nodevalue 属性值
next

等能够熟练的运用xmldom对象来操作xml文件了,就可以享受xmlhttp对象来实现asp下的许多功能了。
==========================================================================================

xmlList.readyState=='complete'
===================================
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
}