您好,欢迎来到点滴吧! 手机版
点滴吧www.diandiba.com
记录点点滴滴,尽在点滴吧
  • 文章
  • 文章
  • 特效
  • 素材
  • 景点
您现在的位置:首页 > ASP教程 > 文章正文
asp操作XML的方法
更新时间:2015/1/17 17:38:56   点击:2451次

ASP通过XMLDom在服务器端操作XML文件的主要方法和实现对于小数据量,xml文件在检索更新上于ACCESS有很多优势。


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


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


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


'取得xml数据
'方法1 取得xml文件的xml数据
objDom.load("c:/test.xml")
'方法2 取得xml数据串的数据
objDom.loadxml("<people><man name="sd"/></people>")


'创建一个节点对象
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下的许多功能了。


re:[转]ASP通过XMLDom在服务器端操作XML文件的主要方法和实现


xml既然可以看成是数据库,那它的第一步工作就当然是创建链接对象了。(以ASP+xml为例)

创建方法同链接数据库一样,用server.createobject为创建。

方法如下:

set xmlDoc= Server.CreateObject("microsoft.xmldom")
xmlDoc.async=false
xmldata=数据源绝对路径
xmlDoc.load xmldata '这里使用load方法进行链接


既于xml的数据格式是比较人性化的,可以由于人为或其它的原因,引起数据格式不合法,这时如果继续使用的话,会引起程序出程,这样,我们往往在创建好链接对象后进行数据格式验证。

方法如下:

if xmlDoc.parseError.errorCode<>0 then
   ….错误处理


<% 
'—————————————————————- 
'程序简介: 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看 
'入口参数: 无 
'出口参数: 无 
'———————————————— 
'函数名字:ConnectXml() 
'入口参数: filename 需要连接或打开的xml文件名 
'出口参数: 无 
'返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。 
' ConnectXml<>0,则打印错误信息strError 
'———————————————— 
dim XMLMorntekDocument
function ConnectXml(filename) 
dim strSourceFile 
strSourceFile = Server.MapPath(filename) 
Set XMLMorntekDocument = Server.CreateObject(”Microsoft.XMLDOM”)  
XMLMorntekDocument.async = false  
XMLMorntekDocument.load(strSourceFile) 
ConnectXml=XMLMorntekDocument.parseerror.errorcode 
if XMLMorntekDocument.parseerror.errorcode<>0 then 
strError=”<h2>error”&XMLMorntekDocument.parseerror.errorcode&”</h2>” 
strError=strError&XMLMorntekDocument.parseerror.reason&”<br>” 
strError=strError&XMLMorntekDocument.parseerror.url&”<br>” 
strError=strError&XMLMorntekDocument.parseerror.line&”<br>” 
strError=strError&XMLMorntekDocument.parseerror.filepos&”<br>” 
strError=strError&XMLMorntekDocument.parseerror.srcText&”<br>” 
response.write strError 
end if 
end function
'———————————————— 
'函数名字:CloseXml() 
'入口参数: 无 
'出口参数: 无 
'———————————————— 
function CloseXml(XMLMorntekDocument) 
if IsObject(XMLMorntekDocument) then 
set XMLMorntekDocument=nothing 
end if 
end function
'———————————————— 
'函数名字:SelectXmlNodeText(elementname) 
'入口参数: elementname 元素的名字 
'出口参数: 无 
'———————————————— 
function SelectXmlNodeText(elementname)  
     elementname=”//”&elementname 
     temp=XMLMorntekDocument.selectSingleNode(elementname).text 
     selectXmlNodeText= server.htmlencode(temp)  
end function  
'———————————————— 
'函数名字:InsertXmlNodeText(befelementname,elementname,elementtext) 
'入口参数: elementname 插入的元素的名字 
'           befelementname在此元素的名字前面插入元素 
'           elementtext 插入的元素的文本 
'出口参数: 无 
'———————————————— 
function InsertXmlNodeText(befelementname,elementname,elementtext)  
dim befelement,element 
set befelement=XMLMorntekDocument.selectSingleNode(”//”&befelementname) 
set element= XMLMorntekDocument.createelement(elementname) 
befelement.insertBefore element,befelement.firstchild 
element.text=elementtext 
end function  
'———————————————— 
'函数名字:UpdateXmlNodeText(elementname,newelementtext) 
'入口参数: elementname 元素的名字 
'           newelementtext元素的新文本 
'出口参数: 无 
'———————————————— 
function UpdateXmlNodeText(elementname,newelementtext)  
dim element 
set element=XMLMorntekDocument.selectSingleNode(”//”&elementname) 
element.text=newelementtext 
end function  
'———————————————— 
'函数名字:DeleteXmlNodeText(elementname) 
'入口参数: elementname 元素的名字 
'出口参数: 无 
'———————————————— 
function DeleteXmlNodeText(elementname)  
XMLMorntekDocument.selectSingleNode(”//”&elementname).text =”" 
end function  
%>


相关文章
导航分类
热门文章
关于我们| 联系我们| 免责声明| 网站地图|
CopyRight 2012-2015 www.diandiba.com - 点滴吧 All Rights Reserved
滇ICP备09005765号-2