国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP XML操作類代碼

2024-05-04 11:08:39
字體:
供稿:網(wǎng)友
ASP XML操作類,想學(xué)習(xí)xml操作的朋友可以參考下。
 
 
 
復(fù)制代碼代碼如下:
Class XMLClass 
Private objXml 
Private xmlDoc 
Private xmlPath 
'//============================================================ 

Sub Class_initialize 
Set objXml = Server.CreateObject("MSXML2.DOMDocument") 
objXml.preserveWhiteSpace = true 
objXml.async = false 
End Sub 
Sub Class_Terminate 
Set objXml = Nothing 
End Sub 
'//============================================================ 

Public Function CreateNew(sName) 
Set tmpNode = objXml.createElement(sName) 
objXml.appendChild(tmpNode) 
Set CreateNew = tmpNode 
End Function 

Public Function OpenXml(sPath) 
OpenXml=False 
sPath=Server.MapPath(sPath) 
'Response.Write(sPath) 
xmlPath = sPath 
If objXml.load(sPath) Then 
Set xmlDoc = objXml.documentElement 
OpenXml=True 
End If 
End Function 

Public Sub LoadXml(sStr) 
objXml.loadXML(sStr) 
Set xmlDoc = objXml.documentElement 
End Sub 
Public Sub InceptXml(xObj) 
Set objXml = xObj 
Set xmlDoc = xObj.documentElement 
End Sub 
'//============================================================ 

Public Function AddNode(sNode,rNode) 
' sNode STRING 節(jié)點名稱 
' rNode OBJECT 增加節(jié)點的上級節(jié)點引用 
'============================================================= 
Dim TmpNode 
Set TmpNode = objXml.createElement(sNode) 
rNode.appendChild TmpNode 
Set AddNode = TmpNode 
End Function 

Public Function AddAttribute(sName,sValue,oNode) 
' sName STRING 屬性名稱 
' sValue STRING 屬性值 
' oNode OBJECT 增加屬性的對象 
'============================================================= 
oNode.setAttribute sName,sValue 
End Function 

Public Function AddText(FStr,cdBool,oNode) 
Dim tmpText 
If cdBool Then 
Set tmpText = objXml.createCDataSection(FStr) 
Else 
Set tmpText = objXml.createTextNode(FStr) 
End If 
oNode.appendChild tmpText 
End Function 
'======================================================================================================== 

Public Function GetAtt(aName,oNode) 
' aName STRING 屬性名稱 
' oNode OBJECT 節(jié)點引用 
'============================================================= 
dim tmpValue 
tmpValue = oNode.getAttribute(aName) 
GetAtt = tmpValue 
End Function 

Public Function GetNodeName(oNode) 
' oNode OBJECT 節(jié)點引用 
GetNodeName = oNode.nodeName 
End Function 

Public Function GetNodeText(oNode) 
' oNode OBJECT 節(jié)點引用 
GetNodeText = oNode.childNodes(0).nodeValue 
End Function 

Public Function GetNodeType(oNode) 
' oNode OBJECT 節(jié)點引用 
GetNodeType = oNode.nodeValue 
End Function 

Public Function FindNodes(sNode) 
Dim tmpNodes 
Set tmpNodes = objXml.getElementsByTagName(sNode) 
Set FindNodes = tmpNodes 
End Function 

Public Function FindNode(sNode) 
Dim TmpNode 
Set TmpNode=objXml.selectSingleNode(sNode) 
Set FindNode = TmpNode 
End Function 

Public Function DelNode(sNode) 
Dim TmpNodes,Nodesss 
Set TmpNodes=objXml.selectSingleNode(sNode) 
Set Nodesss=TmpNodes.parentNode 
Nodesss.removeChild(TmpNodes) 
End Function 

Public Function ReplaceNode(sNode,sText,cdBool) 
'replaceChild 
Dim TmpNodes,tmpText 
Set TmpNodes=objXml.selectSingleNode(sNode) 
'AddText sText,cdBool,TmpNodes 
If cdBool Then 
Set tmpText = objXml.createCDataSection(sText) 
Else 
Set tmpText = objXml.createTextNode(sText) 
End If 
TmpNodes.replaceChild tmpText,TmpNodes.firstChild 
End Function 

Private Function ProcessingInstruction 
'//--創(chuàng)建XML聲明 
Dim objPi 
Set objPi = objXML.createProcessingInstruction("xml", "version="&chr(34)&"1.0"&chr(34)&" encoding="&chr(34)&"gb2312"&chr(34)) 
'//--把xml生命追加到xml文檔 
objXML.insertBefore objPi, objXML.childNodes(0) 
End Function 
'//============================================================================= 

Public Function SaveXML() 
'ProcessingInstruction() 
objXml.save(xmlPath) 
End Function 

Public Function SaveAsXML(sPath) 
ProcessingInstruction() 
objXml.save(sPath) 
End Function 
'//================================================================================== 
'相關(guān)統(tǒng)計 

Property Get Root 
Set Root = xmlDoc 
End Property 

Property Get Length 
Length = xmlDoc.childNodes.length 
End Property 
'//================================================================================== 
'相關(guān)測試 
Property Get TestNode 
TestNode = xmlDoc.childNodes(0).text 
End Property 
End Class


ASP通過XMLDom在服務(wù)器端操作XML文件的主要方法和實現(xiàn) 
對于小數(shù)據(jù)量,xml文件在檢索更新上于ACCESS有很多優(yōu)勢。 

我曾經(jīng)測試過不用數(shù)據(jù)庫,把網(wǎng)站的會員信息,商品數(shù)據(jù)信息,交易信息,網(wǎng)站定制信息全部存放在三個xml文件中,運行結(jié)果十分正常,感覺上比數(shù)據(jù)庫快多了,不過沒有作測試,不能確定。 

下面說一下創(chuàng)建,查詢,修改等對xml操作的主要方法 

‘創(chuàng)建DOM對象 
set objDom=server.CreateObject(”MicroSoft.XMLDom”) 

‘取得xml數(shù)據(jù) 
‘方法1 取得xml文件的xml數(shù)據(jù) 
objDom.load(”c:/test.xml”) 
‘方法2 取得xml數(shù)據(jù)串的數(shù)據(jù) 
objDom.loadxml(”<people><man name=”sd”/></people>”) 

‘創(chuàng)建一個節(jié)點對象 
Set Newnode=objDom.CreateElement(”people”) 
‘給這個節(jié)點赴值 
Newnode.Text=”人” 
‘ 給這個節(jié)點添加屬性 
Set NewAttribute=objDom.CreateNode(”attribute”,”name”,”") 
NewAttribute.Text= ”張三” 
Newnode.SetAttributeNode NewAttribute 
‘給這個節(jié)點添加子節(jié)點 
Set NewnodeChild=objDom.CreateElement(”address”) 
Newnode.appendChild NewnodeChild 
‘保存這個節(jié)點對象 
objDom.appendChild Newnode 
objDom.save(”c:/test.xml”) 

‘查找一個節(jié)點對象 
set objtofind=objdom.documentElement.SelectSingleNode(”//people/man”) 
‘取出這個節(jié)點對象的 節(jié)點名,節(jié)點值,某個屬性值,和全部的xml 
nodename=objtofind.nodename 
nodevalue=objtofind.text 
objtofind.GetAttributeNode(”name”).Nodevalue '屬性名為name的屬性值 

‘取出一個屬性節(jié)點對象 
set objattrtofind=objdom.documentElement.SelectSingleNode(”//people/man”). GetAttributeNode(”name”) 
‘取出這個節(jié)點的屬性名,屬性值 
nodeattrname=objattrtofind.nodename 
nodeattrvalue=objattrtofind.nodevalue 

‘刪除一個節(jié)點對象 
set objnode=objdom.documentElement.SelectSingleNode(”//people/man”) '要刪除的節(jié)點 
set objparentnode=objdom.documentElement.SelectSingleNode(”//people”) '要刪除的節(jié)點的父節(jié)點 
objparentnode.removeChild objnode 

‘取出一個節(jié)點的字節(jié)點集合 
set objnodes=objdom.documentElement.SelectSingleNode(”//people/man”).ChildNodes 
遍歷這個集合 
方法1 
for each element in objnodes 
response.write element.nodename 字節(jié)點名 
response.write element.text 字節(jié)點值 
next 
方法2 
domlength=objnodes.length 
for i = 0 to domlength-1 
response.write objnodes.childnodes(i).nodename 字節(jié)點名 
response.write objnodes.childnodes(i).text 字節(jié)點值 
next 

‘取出一個節(jié)點的屬性集合 
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對象來實現(xiàn)asp下的許多功能了。 

re:[轉(zhuǎn)]ASP通過XMLDom在服務(wù)器端操作XML文件的主要方法和實現(xiàn) 
飛飛,你怎么不介紹一下@的用法,沒了這個,很多事不方便。 
xml,有人也稱之為數(shù)據(jù)壓縮技術(shù),顧名思義,xml是可以充當(dāng)數(shù)據(jù)庫來用。 
所以,我們可以把xml看成是“小型的數(shù)據(jù)庫”。為什么說是小型呢?因為xml本身的功能及應(yīng)用方便,與數(shù)據(jù)庫還是存在著一定的差別。那我們?yōu)槭裁匆褂脁ml呢?因為,有時候我們的一些應(yīng)用程序雖然進行數(shù)據(jù)存取,但是,如果使用數(shù)據(jù)庫的話,顯行有些不夠靈活,方便。這個時候,我們就應(yīng)該結(jié)合xml來使用。 
xml既然可以看成是數(shù)據(jù)庫,那它的第一步工作就當(dāng)然是創(chuàng)建鏈接對象了。(以ASP+xml為例) 
創(chuàng)建方法同鏈接數(shù)據(jù)庫一樣,用server.createobject為創(chuàng)建。 
方法如下: 
set xmlDoc= Server.CreateObject(”microsoft.xmldom”) 
xmlDoc.async=false 
xmldata=數(shù)據(jù)源絕對路徑 
xmlDoc.load xmldata '這里使用load方法進行鏈接 

既于xml的數(shù)據(jù)格式是比較人性化的,可以由于人為或其它的原因,引起數(shù)據(jù)格式不合法,這時如果繼續(xù)使用的話,會引起程序出程,這樣,我們往往在創(chuàng)建好鏈接對象后進行數(shù)據(jù)格式驗證。 
方法如下: 
if xmlDoc.parseError.errorCode<>0 then 
….錯誤處理 


<% 
‘—————————————————————- 
‘程序簡介: 完成asp語言對XML文檔中指定節(jié)點文本的增加、刪除、修改、查看 
‘入口參數(shù): 無 
‘出口參數(shù): 無 
‘———————————————— 
‘函數(shù)名字:ConnectXml() 
‘入口參數(shù): filename 需要連接或打開的xml文件名 
‘出口參數(shù): 無 
‘返回值 :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 

‘———————————————— 
‘函數(shù)名字:CloseXml() 
‘入口參數(shù): 無 
‘出口參數(shù): 無 
‘———————————————— 
function CloseXml(XMLMorntekDocument) 
if IsObject(XMLMorntekDocument) then 
set XMLMorntekDocument=nothing 
end if 
end function 

‘———————————————— 
‘函數(shù)名字:SelectXmlNodeText(elementname) 
‘入口參數(shù): elementname 元素的名字 
‘出口參數(shù): 無 
‘———————————————— 
function SelectXmlNodeText(elementname) 
elementname=”//”&elementname 
temp=XMLMorntekDocument.selectSingleNode(elementname).text 
selectXmlNodeText= server.htmlencode(temp) 

end function 

‘———————————————— 
‘函數(shù)名字:InsertXmlNodeText(befelementname,elementname,elementtext) 
‘入口參數(shù): elementname 插入的元素的名字 
‘ befelementname在此元素的名字前面插入元素 
‘ elementtext 插入的元素的文本 
‘出口參數(shù): 無 
‘———————————————— 
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 

‘———————————————— 
‘函數(shù)名字:UpdateXmlNodeText(elementname,newelementtext) 
‘入口參數(shù): elementname 元素的名字 
‘ newelementtext元素的新文本 
‘出口參數(shù): 無 
‘———————————————— 
function UpdateXmlNodeText(elementname,newelementtext) 
dim element 
set element=XMLMorntekDocument.selectSingleNode(”//”&elementname) 
element.text=newelementtext 
end function 

‘———————————————— 
‘函數(shù)名字:DeleteXmlNodeText(elementname) 
‘入口參數(shù): elementname 元素的名字 
‘出口參數(shù): 無 
‘———————————————— 
function DeleteXmlNodeText(elementname) 
XMLMorntekDocument.selectSingleNode(”//”&elementname).text =”" 
end function 
%> 
____________________ 

本文未經(jīng)測試,文章可行度未知。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江川县| 多伦县| 隆回县| 崇仁县| 浏阳市| 三河市| 景宁| 澄江县| 新竹市| 安宁市| 兰坪| 白水县| 绥阳县| 镇原县| 旬邑县| 浦北县| 徐汇区| 海城市| 双江| 临高县| 盱眙县| 南宫市| 安西县| 桐梓县| 杭锦后旗| 龙里县| 嫩江县| 扶绥县| 永登县| 和静县| 定州市| 江川县| 克拉玛依市| 洪雅县| 巴塘县| 临沂市| 桃园市| 鸡东县| 文安县| 恩施市| 从化市|