asp操纵xml类

<%
Class cls_xml

private sfilename
private sxmlfile
private sobjxml

property let filename(value)
    sfilename=value
end property

property get filename
    filename=sfilename
end property

property get objxml
    set objxml=sobjxml
end property

private sub class_initialize()
    sfilename=""
    sxmlfile=""
    sobjxml=null
end sub

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

private sub createfile()'创建xml文件
    Set oPI=sobjXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""GB2312""")
    sobjXML.insertBefore oPI,sobjXML.childNodes(0)
    savefile
end sub

public function loadfile()'读取xml文件
    sxmlfile=server.MapPath(sfilename)
    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

public sub addnode(byval parentnode,byval childnode,byval nodetext)'添加节点
    if parentnode="" then
        sobjxml.appendchild (sobjxml.createElement(childnode))
    else
        set child=sobjxml.createElement(childnode)
        child.text=nodetext
        sobjxml.selectsinglenode(parentnode).appendchild child
    end if
end sub

public sub addattr(byval parentnode,byval attrtype,byval attrname,byval attrtext)'添加属性
    set sattribute=sobjxml.createNode(attrtype,attrname,"")
    sattribute.text=attrtext
    if parentnode="" then
        sobjxml.documentElement.setattributenode sattribute
    else
        sobjxml.documentElement.selectsinglenode(parentnode).setattributenode sattribute
    end if
    savefile
end sub

private function getnode(byval nodepath,byval attrname,byval attrvalue)'获得节点对象
    if attrname="" then
        set getnode=sobjxml.documentElement.selectsinglenode(nodepath)
    else
        set getnode=sobjxml.documentElement.selectsinglenode("//"&nodepath&"[@"&attrname&"='"&attrvalue&"']")
    end if
end function

public function getnodename(byval nodepath,byval attrname,byval attrvalue)'获得节点名称
    getnodename=getnode(nodepath,attrname,attrvalue).nodename
end function

public function getnodevalue(byval nodepath,byval attrname,byval attrvalue)'获得节点内容
    getnodevalue=getnode(nodepath,attrname,attrvalue).text
end function

public sub modifynodevalue(byval nodepath,byval newtext,byval attrname,byval attrvalue)'修改节点内容
    set newnode=getnode(nodepath,attrname,attrvalue)
    newnode.text=newtext
    savefile
end sub

public function getnodeattrname(byval nodepath,byval attrname,byval attrname_,byval attrvalue_)'获得节点属性名称
    getnodeattrname=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname).nodename
end function

public function getnodeattrvalue(byval nodepath,byval attrname,byval attrname_,byval attrvalue_)'获得节点属性值
    getnodeattrvalue=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname).nodevalue
end function

public sub modifynodeattrvalue(byval nodepath,byval attrname,byval newtext,byval attrname_,byval attrvalue_)'修改节点属性值
    set newattr=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname)
    newattr.text=newtext
    savefile
end sub

public sub delnode(byval parentnodepath,byval parentnodeattrname,byval parentnodeattrvalue,byval childnodepath,byval childnodeattrname,byval childnodeattrvalue)'删除节点
    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
end sub

public function getchildlength(byval nodename,byval attrname,byval attrvalue)'获得节点长度
    if nodename="" then
        getchildlength=sobjxml.documentElement.childnodes.length
    else
        getchildlength=getnode(nodename,attrname,attrvalue).childnodes.length
    end if
end function

private sub savefile()'保存文件
    sobjxml.save(sxmlfile)
end sub

End class
%>

评论: 1 | 引用: 0 | 查看次数: 4298
发表评论
登录后再发表评论!