设为首页
收藏本站
最新电影
> 子栏目 Asp | Jsp | XML | XSL | Div+Css | 自定义函数 | 数据库 | 脚本特效
您现在的位置: 首页=>后台技术=>自定义函数 订阅本栏目  
Asp解析(操作)xml类(xmldom)
时间: 2008-11-29 16:44:58 阅读次数:2967


Asp解析(操作)xml类(xmldom)

<%
'Asp解析Xml类
'--------------类属性-------------------
'let filename 设置xml名称(路径) +++必须+++++
'language 设置xml的语言类型
'-------------类公共方法----------------
'loadfile 加载xml
'nodeAdd(parentnode,childnode,nodetext) 添加节点
'attrAdd(parentnode,attrname,attrtext) '添加属性
'getnodename(nodepath,attrname,attrvalue) '获得节点名称
'getnodevalue(nodepath,attrname,attrvalue) '获得节点内容
'modifynodevalue(nodepath,newtext,attrname,attrvalue)'修改节点内容
'getnodeattrlength(nodepath,attrname,attrname_,attrvalue_)'获得节点属性个数
'getnodeattrvalue(nodepath,attrname,attrname_,attrvalue_) '获得节点属性值
'modifynodeattrvalue(nodepath,attrname,newtext,attrname_,attrvalue_)'修改节点属性值
'delnode(parentnodepath,parentnodeattrname,parentnodeattrvalue,childnodepath,childnodeattrname,childnodeattrvalue)'删除节点
'getchildlength(nodename,attrname,attrvalue)'获得节点长度
'
'
'
'
'
'
class cls_xml
private sfilename
private sxmlfile
private sobjxml
private slanguage
property let filename(filename_)
sfilename=filename_
end property
property get filename
filename=sfilename
end property
property let language(language_)
slanguage = language_
end property
property get language
language=slanguage
end property
private sub class_initialize()
sfilename=""
sxmlfile=""
language = "utf-8"
sobjxml=null
end sub

private sub class_terminate()
sobjxml.close
set sobjxml=nothing
end sub

'****************************************************
'函数名:loadfile
'作 用:加载xml文件
'参 数:无
'返回值:无
'****************************************************
public function loadfile()'读取xml文件
sxmlfile=server.MapPath(filename)
set sobjxml=server.CreateObject("msxml2.domdocument")
sobjxml.load(sxmlfile)
sobjxml.async=false
if sobjxml.parseError.ErrorCode = 0 then
loadfile=true
else
createfile
end if
end function
'****************************************************
'函数名:nodeAdd
'作 用:添加节点
'参 数:parentnode 父节点路径
' childnode 子节点
' nodetext 节点名称
'返回值:无
'****************************************************
public sub nodeAdd(parentnode,childnode,nodetext)'添加节点
on error resume next
Dim Child
if parentnode="" then
sobjxml.appendchild (sobjxml.createElement(childnode))
else
set child=sobjxml.createElement(childnode)
child.text=nodetext
sobjxml.selectsinglenode(parentnode).appendchild child
end if
If Err Then response.Write("向指定节点添加数据失败!<br />"&Err.Description):Exit sub
savefile
end sub
'****************************************************
'函数名:attrAdd
'作 用:添加属性
'参 数:parentnode 父节点路径
' attrname 属性名称
' attrtext 属性值
'返回值:无
'****************************************************
public sub attrAdd(parentnode,attrname,attrtext)'添加属性
on error resume next
Dim sattribute
set sattribute=sobjxml.createNode(2,attrname,"")
sattribute.text=attrtext
if parentnode="" then
sobjxml.documentElement.setattributenode sattribute
else
sobjxml.documentElement.selectsinglenode(parentnode).setattributenode sattribute
end if
If Err Then response.Write("添加/修改指定节点的属性失败!<br />"&Err.Description):Exit sub
savefile
end sub
'****************************************************
'函数名:getnodename
'作 用:获得节点名称
'参 数:nodepath 父节点路径
' attrname 属性名称
' attrvalue 属性值
'返回值:无
'****************************************************
public function getnodename(nodepath,attrname,attrvalue)'获得节点名称
on error resume next
getnodename = getnode(nodepath,attrname,attrvalue).nodename
If Err Then response.Write("获取"""&nodepath&"""节点名称失败!"&Err.Description):Exit function
end function
'****************************************************
'函数名:getnodevalue
'作 用:获得节点内容
'参 数:nodepath 父节点路径
' attrname 属性名称
' attrvalue 属性值
'返回值:无
'****************************************************
public function getnodevalue(nodepath,attrname,attrvalue)'获得节点内容
on error resume next
getnodevalue=getnode(nodepath,attrname,attrvalue).text
If Err Then response.Write("获取"""&nodepath&"""节点内容失败!"&Err.Description):Exit function
end function
'****************************************************
'函数名:modifynodevalue
'作 用:获得节点内容
'参 数:nodepath 父节点路径
' newtext 节点的新内容
' attrname 属性名称
' attrvalue 属性值
'返回值:无
'****************************************************
public sub modifynodevalue(nodepath,newtext,attrname,attrvalue)'修改节点内容
on error resume next
dim newnode
set newnode=getnode(nodepath,attrname,attrvalue)
newnode.text=newtext
savefile
If Err Then response.Write("修改"""&nodepath&"""节点内容失败!"&Err.Description):Exit sub
end sub
'****************************************************
'函数名:getnodeattrlength
'作 用:获得节点属性个数
'参 数:nodepath 父节点路径
' attrname 属性名称
' attrname_ 参考属性名称
' attrvalue_ 参考属性值
'返回值:无
'****************************************************
public function getnodeattrlength(nodepath,attrname,attrname_,attrvalue_)'获得节点属性个数
getnodeattrlength=getnode(nodepath,attrname_,attrvalue_).attributes.length
end function
'****************************************************
'函数名:getnodeattrvalue
'作 用:获得节点属性值
'参 数:nodepath 父节点路径
' attrname 属性名称
' attrname_ 参考属性名称
' attrvalue_ 参考属性值
'返回值:无
'****************************************************
public function getnodeattrvalue(nodepath,attrname,attrname_,attrvalue_)'获得节点属性值
on error resume next
getnodeattrvalue=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname).nodevalue
If Err Then response.Write("获得"""&nodepath&"""节点点属性值失败!"&Err.Description):Exit function
end function
'****************************************************
'函数名:modifynodeattrvalue
'作 用:修改节点属性值
'参 数:nodepath 父节点路径
' attrname 属性名称
' newtext 新的属性值
' attrname_ 参考属性名称
' attrvalue_ 参考属性值
'返回值:无
'****************************************************
public sub modifynodeattrvalue(nodepath,attrname,newtext,attrname_,attrvalue_)'修改节点属性值
on error resume next
Dim newattr
set newattr=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname)
newattr.text=newtext
savefile
If Err Then response.Write("修改"""&nodepath&"""节点属性值失败!"&Err.Description):Exit sub
end sub
'****************************************************
'函数名:delnode
'作 用:删除节点
'参 数:parentnodepath 父节点路径
' parentnodeattrname 父节点属性名称
' parentnodeattrvalue 父节点属性值
' childnodepath 子节点路径
' childnodeattrname 子节点属性名称
' childnodeattrvalue 子节点属性值
'返回值:无
'****************************************************
public sub delnode(parentnodepath,parentnodeattrname,parentnodeattrvalue,childnodepath,childnodeattrname,childnodeattrvalue)'删除节点
on error resume next
Dim parentnode,childnode
if parentnodepath="" then
set parentnode=sobjxml.documentElement
else
set parentnode=getnode(parentnodepath,parentnodeattrname,parentnodeattrvalue)
end if
set childnode=getnode(childnodepath,childnodeattrname,childnodeattrvalue)
parentnode.removechild childnode
savefile
If Err Then response.Write("删除"""&nodepath&"""节点失败!"&Err.Description):Exit sub
end sub
'****************************************************
'函数名:getchildlength
'作 用:获得节点长度
'参 数:nodename 父节点路径
' attrname 父节点属性名称
' attrvalue 父节点属性值
'返回值:无
'****************************************************
public function getchildlength(nodename,attrname,attrvalue)'获得节点长度
if nodename="" then
getchildlength=sobjxml.documentElement.childnodes.length
else
getchildlength=getnode(nodename,attrname,attrvalue).childnodes.length
end if
end function
'----------------------------------------------------
'-----------------以下为私有函数-----------------------
'----------------------------------------------------
'****************************************************
'函数名:getnode
'作 用:获得节点对象
'参 数:nodepath 父节点路径
' attrname 父节点属性名称
' attrvalue 父节点属性值
'返回值:无
'****************************************************
private function getnode(nodepath,attrname,attrvalue)'获得节点对象
on error resume next
if attrname="" then
set getnode=sobjxml.documentElement.selectsinglenode(nodepath)
else
set getnode=sobjxml.documentElement.selectsinglenode("//"&nodepath&"[@"&attrname&"='"&attrvalue&"']")
end if
If Err Then response.Write("获取"""&nodepath&"""节点失败!"&Err.Description):Exit function
end function
'****************************************************
'函数名:createfile
'作 用:创建xml文件
'参 数:
'返回值:无
'****************************************************
private sub createfile()'创建xml文件
Dim oPI
Set oPI=sobjXML.createProcessingInstruction("xml", "version=""1.0"" encoding="""&language&"""")
sobjXML.insertBefore oPI,sobjXML.documentElement
savefile
end sub
private sub savefile()'保存文件
sobjxml.save(sxmlfile)
end sub
end class
Dim Xml
Set xml = new cls_xml
xml.filename = "1.xml"
xml.loadfile
response.Write(xml.getnodeattrlength("units/unit","name","",""))
Response.Write("<br />")
Dim length ,i
length = xml.getchildlength("units","","")
for i = 0 to length-1
Response.Write("单位:")
Response.Write(xml.getnodeattrvalue("units/unit["&i&"]","name","",""))
Response.Write("||Id:")
Response.Write(xml.getnodeattrvalue("units/unit["&i&"]","id","",""))
response.Write("<br />")
next
%>



相关手册下载:http://www.ffasp.com/content.asp?newsid=250飞飞Asp技术乐!园

实例请下载下面的压缩包:


本站下载资源全部放在fs2you共享空间上,若不能正常下载以上资源,请下载修复补丁
下载"Asp解析(操作)xml类(xmldom)"Word版
点击下载
站内搜索    

下一篇使用FSO修改文件特定内容,更新、替换

上一篇获取字符串实际占用字节数(如何取特定的长)(len)

本栏目最新 栏目最新列表
解决asp使用xmlhttp生成静态页有延时的方法
Asp按照指定目录使用fso创建文件夹
使用aspjpeg组件给指定图片添加文字水印
使用aspjpeg组件给指定图片添加图片水印
使用aspjpeg组件生成缩略图
网站优化策划 栏目最新列表
增加网站外链的快速方法
网站上线前必做的30个检查
新的友情链接参考标准(没有google的PR情况
优化Google的AdSense广告的五个工具
王通讲SEO八大基础
站点最新 站点最新列表
微博推广的一些技巧
xhEditor v1.1.7 发布,
收集的一些轻量级非常实
50个新鲜兼容最新版本的
javascript中cookie的设
Excel中出现#VALUE!、#D
jquery插件:飞飞表情插件
十个使用HTML5开发的精彩
支持HTML5的浏览器有哪些
飞妮莫属:漫画:如何写出
历史最热10条信息  
MIME介绍 及 [1] [2] [3]
巧用Google和迅雷来下载
VIA Rhine II Fast Ethe
Transact SQL 常 [1] [2]
电脑常用端 [1] [2] [3]
十道羊皮卷 欣赏+mp3版+
Do you get a kick out
每日一句:A friend and
每日一句:Theres no tu
网站开发常用手册
 width= 
伟哥博客 西安房产 123最新电影 三四六四