<%
'*********************************************************
'文件名称: Ex_XmlCls.asp
'功能描述: 易心博客XML文档处理类
'程序制作：易心
'官方网站: http://www.ex123.net
'论坛支持：http://bbs.ex123.net
'程序演示：http://exblog.ex123.net
'Copyright (C) 2007 ex123.net All rights reserved.
'LastUpdate:    2007-4-21
'*********************************************************
class Ex_XmlCls
dim xmlObj,filePath
private sub class_initialize
set xmlObj=server.CreateObject("microsoft.xmldom")
end sub
private sub class_terminate
set xmlObj=nothing
end sub
public property let letFilePath(str)
filePath=server.MapPath(str)
end property
'*********************
'功能：生成xml文件
'参数: 无
'*********************
public sub createXml()
dim temp,strVersion,root
set strVersion=xmlObj.createprocessinginstruction("xml"," version='1.0' encoding='gb2312'")
xmlObj.appendChild(strVersion)
set root=xmlObj.createElement("root")
xmlObj.appendChild(root)
xmlObj.save filePath
end sub
'*********************
'功能：添加节点 
'参数: nodeName--要添加的节点名 pNodeName--父节点名 如：//Ex[@id='1'] (为空为根节点) nodeValue--节点值 
'*********************
public sub addNode(pNodeName,nodeName,nodeValue)
dim temp,pNode
if pNodeName="" then
	pNodeName="//root"
end if
xmlObj.load(filePath)
set pNode=xmlObj.selectSingleNode(pNodeName)
set temp=xmlObj.createElement(nodeName)
temp.text=nodeValue
pNode.appendChild(temp)
xmlObj.save filePath
end sub
'*******************
'功能：删除节点 
'参数: pNodeName---父节点名称(为空为根节点) nodeName--要删除的节点名称 例如://Ex[@id='1']
'*******************
public sub delNode(pNodeName,nodeName)
dim pNode,temp
xmlObj.load(filePath)
if pNodeName="" then
	pNodeName="//root"
end if
set pNode=xmlobj.selectSingleNode(pNodeName)
set temp=xmlObj.selectSingleNode(nodeName)
pNode.removeChild temp
xmlobj.save filePath
end sub
'******************
'功能：修改节点值
'参数：nodeName---要修改的节点 例如://Ex[@id='1'] nodeValue---节点值
'******************
public sub modifyNodeValue(nodeName,nodeValue)
dim temp
xmlobj.load(filePath)
set temp=xmlobj.selectsinglenode(nodename)
temp.text=nodeValue
xmlobj.save filepath
end sub
'****************
'功能：添加节点属性
'参数: nodeName---节点名称  例如://Ex[@id='1'] nodeAttributeName---属性名 nodeAttributeValue---属性值
'****************
public sub addAtt(nodeName,nodeAttributeName,nodeAttributeValue)
dim temp,att
xmlobj.load(filePath)
set temp=xmlobj.selectsinglenode(nodename)
set att=xmlobj.createNode("attribute",""&nodeAttributeName&"","")
att.text=nodeAttributeValue
temp.setAttributeNode att
xmlobj.save filepath
end sub
'****************
'功能：删除节点属性
'参数：nodeName---节点名称  例如://Ex[@id='1'] nodeAttributeName---属性名(如果赋空值表示删除本节点的所有属性)
'****************
public sub delAtt(nodeName,nodeAttributeName)
dim temp
xmlobj.load(filePath)
set temp=xmlobj.selectsinglenode(nodename)
if nodeAttributeName<>"" then
	temp.removeAttribute(nodeAttributeName)
else
	temp.removeAll
end if
xmlobj.save filepath
end sub
'***************
'功能：修改节点属性
'参数: nodeName---节点名称  例如://Ex[@id='1'] nodeAttributeName---属性名 nodeAttributeValue---属性值
'***************
public sub modifyAtt(nodeName,nodeAttributeName,nodeAttributeValue)
dim temp,s
xmlobj.load(filepath)
set temp=xmlobj.selectSingleNode(nodeName).getAttributeNode(nodeAttributeName)
temp.nodeValue=nodeAttributeValue
xmlobj.save filepath
end sub
'*****************
'功能：获得节点值
'参数: nodeName---节点名
'*****************
public function getNodeValue(nodename)
xmlobj.load(filepath)
getNodeValue=xmlobj.documentElement.selectSingleNode(nodeName).text
end Function
'*****************
'功能：获得属性值
'参数: nodeName---节点名 attributeName
'*****************
public function getAttValue(nodename,attributeName)
xmlobj.load(filepath)
getAttValue=xmlobj.selectSingleNode(nodeName).getAttributeNode(attributeName).nodeValue
end Function
'*****************
'功能：获得节点组的指定熟悉的值 以|分割
'参数: nodeName---节点名 AttName
'*****************
public function getNodesAttValue(nodename,AttName)
Dim Nodes,Temp,Node
xmlobj.load(filepath)
Set Nodes=xmlobj.SelectNodes("//"&nodename)
For Each Node In Nodes
	Temp=Temp&Node.getAttributeNode(AttName).NodeValue&"|"
Next 
getNodesAttValue=Temp
end function
end class
%>