ASP XML 조작 클래스 코드

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
' rNode OBJECT
'=============================================================
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
'=============================================================
dim tmpValue
tmpValue = oNode.getAttribute(aName)
GetAtt = tmpValue
End Function
'
Public Function GetNodeName(oNode)
' oNode OBJECT
GetNodeName = oNode.nodeName
End Function
'
Public Function GetNodeText(oNode)
' oNode OBJECT
GetNodeText = oNode.childNodes(0).nodeValue
End Function
'
Public Function GetNodeType(oNode)
' oNode OBJECT
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
'//-- 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
'//==================================================================================
'
'
Property Get Root
Set Root = xmlDoc
End Property
'
Property Get Length
Length = xmlDoc.childNodes.length
End Property
'//==================================================================================
'
Property Get TestNode
TestNode = xmlDoc.childNodes(0).text
End Property
End Class
ASP 는 XMLdom 을 통 해 서버 에서 XML 파일 을 조작 하 는 주요 방법 과 작은 데이터 양 에 대해 xml 파일 은 검색 업데이트 에 있어 ACCESS 에서 많은 장점 을 가진다.저 는 데이터 베 이 스 를 사용 하지 않 고 사이트 의 회원 정보,상품 데이터 정보,거래 정보,사이트 의 맞 춤 형 정 보 를 모두 세 개의 xml 파일 에 저장 하 는 것 을 테스트 한 적 이 있 습 니 다.운영 결과 가 매우 정상 적 이 고 데이터 베이스 보다 훨씬 빠 른 것 같 지만 테스트 를 하지 않 아서 확실 하지 않 습 니 다.다음은 창설,조회,수정 등 xml 작업 의 주요 방법 은'DOM 대상 set obj Dom=server.CreateObject("MicroSoft.XMLdom")'xml 데이터 취득'방법 1 xml 파일 의 xml 데이터 obj Dom.load("c:\test.xml")'방법 2 xml 데이터 문자열 의 데이터 obj Dom.loadxml("/people>")'노드 대상 Set Newnode=obj Dom.Cree 만 들 기'입 니 다.ateElement("people"),"이 노드 에 Newnode.Text="사람","이 노드 에 속성 을 추가 합 니 다.Set NewAttribute=object Dom.CreateNode("attribute","name",")NewAttribute.Text="장삼"Newnode.SetAttributeNode NewAttribute"이 노드 에 하위 노드 Set Newnode Child=object Dom.CreateElement("address")Newnode.appendChild Newnode Child'이 노드 대상 을 저장 합 니 다 obj Dom.appendChild Newnode object Dom.save("c:\test.xml")'노드 대상 set objectoffind=obdom.documentElement.se 를 찾 습 니 다.lectSingleNode("//people/man")'이 노드 대상 의 노드 이름,노드 값,특정한 속성 값 을 추출 합 니 다.모든 xml nodename=object tofind.nodename nodevalue=object tofind.text object tofind.GetAttributeNode("name").Nodevalue'속성 명 name 의 속성 값'은 속성 노드 대상 set object tofind=objdom.documentElement.selectSingleNode("//people/man")를 추출 합 니 다.GetAttributeNode("name")'는 이 노드 의 속성 명 을 추출 합 니 다.속성 값 nodeattrname=obsatrtofind.nodename nodeattrvalue=obsatrtofind.nodevalue'노드 대상 set obsnode=objdom.documentElement.selectSingleNode("//people/man")'삭제 할 노드 set obsaparentnode=obsdom.documentElement.selectSingleNode("//people")'삭제 할 노드 의 부모 노드 obsaparentnode.removeChild obsnode'노드 의 바이트 집합 set obsnodes=objdom.documentElement.selectSingleNode("//people/man")를 꺼 냅 니 다.childNodes 는 이 집합 방법 1 for each element in obsnodes response.write element.nodename 바이트 이름 부 르 기 response.write element.text 바이트 값 next 방법 2 domlength=obsnodes.length for i=0 to domlength-1 response.write obsnodes.childnodes(i).nodename 바이트 이름 response.write obsnodes.childnodes(i).text 바이트 값 next'한 노드 의 속성 집합 set obnodes=objdom.documentElement.selectSingleNode("//people/man").GetAttributeNode("name").attributes 는 이 집합 을 obsnodes response.write element.nodename 속성 이름 response.w 에 옮 겨 다 닙 니 다.rite element.nodevalue 속성 값 next 등 xmldom 대상 을 능숙 하 게 활용 하여 xml 파일 을 조작 하면 xmlhttp 대상 을 누 려 asp 의 많은 기능 을 실현 할 수 있 습 니 다.re:[회전]ASP 는 XMLdom 을 통 해 서버 에서 XML 파일 을 조작 하 는 주요 방법 과 비행 을 실현 합 니 다.@의 용법 을 소개 하지 않 았 습 니까?이것 이 없 으 면 많은 불편 함 이 있 습 니 다.xml,어떤 사람 은 데이터 압축 기술 이 라 고도 부 릅 니 다.말 그대로 xml 는 데이터 베 이 스 를 충당 할 수 있 습 니 다.그래서 우 리 는 xml 를'작은 데이터베이스'로 볼 수 있다.왜 소형 이 라 고 하 죠?xml 자체 의 기능 과 응용 이 편리 하기 때문에 데이터베이스 와 일정한 차이 가 존재 합 니 다.그럼 우 리 는 왜 xml 를 사용 해 야 합 니까?왜냐하면 때때로 우리 의 일부 응용 프로그램 은 데이터 접근 을 하지만 데이터 베 이 스 를 사용 하면 현 행 이 유연 하지 않 고 편리 하지 않 기 때문이다.이 럴 때 우 리 는 xml 를 결합 해서 사용 해 야 한다.xml 데이터베이스 로 볼 수 있 으 니 첫 번 째 작업 은 당연히 링크 대상 을 만 드 는 것 입 니 다.(ASP+xml 를 예 로 들 면)생 성 방법 은 링크 데이터베이스 와 마찬가지 로 server.createobject 를 사용 하여 생 성 합 니 다.방법 은 다음 과 같 습 니 다:set xmlDoc=Server.CreateObject("microsoft.xmldom")xmlDoc.async=false xmldata=데이터 원본 절대 경로 xmlDoc.load xmldata"여기 서 load 방법 으로 xml 에 있 는 데이터 형식 을 연결 하 는 것 은 비교적 인성 화 된 것 입 니 다.인위적인 또는 다른 원인 으로 인해 데이터 형식 이 합 법 적 이지 않 을 수 있 습 니 다.이때 계속 사용 하면 프로그램 이 나 갈 수 있 습 니 다.이렇게 하면 우 리 는 링크 대상 을 만 든 후에 데이터 형식 검증 을 한다.방법 은 다음 과 같다.if xml Doc.parseError.error Code<>0 then.'입구 매개 변수:무'출구 매개 변수:무'――――――――――함수 이름:ConnectXml()'입구 매개 변수:filename 연결 또는 열 어야 할 xml 파일 이름'출구 매개 변수:무'반환 값:ConnectXml=0,XML morntekDocument 는 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=”

error”&XMLMorntekDocument.parseerror.errorcode&”

” strError=strError&XMLMorntekDocument.parseerror.reason&”
” strError=strError&XMLMorntekDocument.parseerror.url&”
” strError=strError&XMLMorntekDocument.parseerror.line&"
"strError=strError&XMLmorntekDocument.parseerror.filepos&"
"strError=strError&XMLmorntekDocument.parseerror.srcText&"
"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,elementname,element text)'입구 매개 변수:element name 에 삽 입 된 요소 의 이름'befelementname 이 요소 의 이름 앞 에 요소'element text 에 삽 입 된 요소 의 텍스트'출구 매개 변수:무'――――――――――――function InsertXml NodeText(befelementname,element name,element text)dim befelement,element set befelement=XMLmorntekDocument.selectSingleNode("//"&befelementname)set element=XMLmorntekDocument.createelement(element name)befelement.insertBefore element,befelement.firstchild element.text=elementtext end function'――――――――――함수 이름:UpdateXmlNodeText(elementname,elementtext end function)new element text)'입구 매개 변수:element name 요소 의 이름'new element text 요소 의 새로운 텍스트'출구 매개 변수:무'――――――――――――――――function UpdateXml NodeText(element name,new element text)dim element set element=XMLmorntek Document.selectSingleNode("/"&element name)element.text=new element text end function'―――――――함수 이름:DeleteXmlNodeText(element name)'입 구 매개 변수:element name 요소 의 이름'출구 매개 변수:무'――――――――――― function DeleteXmlNodeText(elementname) XMLMorntekDocument.selectSingleNode(”//”&elementname).text =”" end function %> ____________________ 본 고 는 테스트 를 거치 지 않 아 문장의 실행 가능성 은 알 수 없다.

좋은 웹페이지 즐겨찾기