Ein xmldom-Operationscode zur Erleichterung von Code, der mit xml <script language=vbscript runat=server> kombiniert werden muss
'============================================== = ===========
„Autor: Sei du selbst.“
„Zeit: 2005-3-15
=============================================== ==========
Klasse XMLClass
Privates objXml
Privates xmlDoc
Privater xmlPath
'//============================================= = =============
'<!--Ereignisse während der Klasseninitialisierung und -abmeldung-->
Sub Class_initialize
Set objXml = Server.CreateObject(MSXML2.DOMDocument)
objXml.preserveWhiteSpace = true
objXml.async = false
Sub beenden
SubClass_Terminate
Setze objXml = Nothing
Sub beenden
'//============================================= = =============
'<!--Neues XML-Dokument erstellen-->
Öffentliche Funktion CreateNew(sName)
Setze tmpNode = objXml.createElement(sName)
objXml.appendChild(tmpNode)
Legen Sie CreateNew = tmpNode fest
Funktion beenden
'<!--XML-Dokument von außen lesen -->
Öffentliche Funktion OpenXml(sPath)
OpenXml=False
sPath=Server.MapPath(sPath)
'Response.Write(sPath)
xmlPath = sPath
Wenn objXml.load(sPath) Dann
Setze xmlDoc = objXml.documentElement
OpenXml=True
Ende wenn
Funktion beenden
'<!--XML-String von außen lesen -->
Öffentlicher Sub LoadXml(sStr)
objXml.loadXML(sStr)
Setze xmlDoc = objXml.documentElement
Sub beenden
Public Sub InceptXml(xObj)
Setze objXml = xObj
Setze xmlDoc = xObj.documentElement
Sub beenden
'//============================================= = =============
'<!--Neuen Knoten hinzufügen-->
Öffentliche Funktion AddNode(sNode,rNode)
' sNode STRING Knotenname
'rNode OBJECT fügt die übergeordnete Knotenreferenz des Knotens hinzu
'============================================== = ============
DimTmpNode
Setze TmpNode = objXml.createElement(sNode)
rNode.appendChild TmpNode
Setze AddNode = TmpNode
Funktion beenden
'<!--Neues Attribut hinzufügen-->
Öffentliche Funktion AddAttribute(sName,sValue,oNode)
' sName STRING-Attributname
' sValue STRING-Attributwert
' oNode OBJECT-Objekt mit hinzugefügten Attributen
'============================================== = ============
oNode.setAttribute sName,sValue
Funktion beenden
'<!--Knoteninhalt hinzufügen-->
Öffentliche Funktion AddText(FStr,cdBool,oNode)
Dimmen Sie tmpText
Wenn cdBool Dann
Setze tmpText = objXml.createCDataSection(FStr)
Anders
Setze tmpText = objXml.createTextNode(FStr)
Ende wenn
oNode.appendChild tmpText
Funktion beenden
'============================================== = ============================================== = =====
'<!--Erhalten Sie den Wert des angegebenen Attributs des Knotens-->
Öffentliche Funktion GetAtt(aName,oNode)
' aName STRING-Attributname
' oNode OBJECT-Knotenreferenz
'============================================== = ============
tmpValue dimmen
tmpValue = oNode.getAttribute(aName)
GetAtt = tmpValue
Funktion beenden
'<!--Knotennamen abrufen-->
Öffentliche Funktion GetNodeName(oNode)
' oNode OBJECT-Knotenreferenz
GetNodeName = oNode.nodeName
Funktion beenden
'<!--Knoteninhalt abrufen-->
Öffentliche Funktion GetNodeText(oNode)
' oNode OBJECT-Knotenreferenz
GetNodeText = oNode.childNodes(0).nodeValue
Funktion beenden
'<!--Knotentyp abrufen-->
Öffentliche Funktion GetNodeType(oNode)
' oNode OBJECT-Knotenreferenz
GetNodeType = oNode.nodeValue
Funktion beenden
'<!--Finde alle Knoten mit demselben Knotennamen-->
Öffentliche Funktion FindNodes(sNode)
Dimmen Sie tmpNodes
Setze tmpNodes = objXml.getElementsByTagName(sNode)
Setze FindNodes = tmpNodes
Funktion beenden
'<!--Auf identischen Knoten prüfen-->
Öffentliche Funktion FindNode(sNode)
DimTmpNode
Setze TmpNode=objXml.selectSingleNode(sNode)
Setzen Sie FindNode = TmpNode
Funktion beenden
'<!--Knoten löschen-->
Öffentliche Funktion DelNode(sNode)
Dimmen Sie TmpNodes,Nodesss
Setze TmpNodes=objXml.selectSingleNode(sNode)
Legen Sie Nodesss=TmpNodes.parentNode fest
Nodesss.removeChild(TmpNodes)
Funktion beenden
'<!--Knoten ersetzen-->
Öffentliche Funktion ReplacementNode(sNode,sText,cdBool)
'replaceChild
Dimmen Sie TmpNodes,tmpText
Setze TmpNodes=objXml.selectSingleNode(sNode)
'AddText sText,cdBool,TmpNodes
Wenn cdBool Dann
Setze tmpText = objXml.createCDataSection(sText)
Anders
Setze tmpText = objXml.createTextNode(sText)
Ende wenn
TmpNodes.replaceChild tmpText,TmpNodes.firstChild
Funktion beenden
Verarbeitungsanweisung für private Funktionen
'//--XML-Deklaration erstellen
Dim objPi
Setze objPi = objXML.createProcessingInstruction(xml, version=&chr(34)&1.0&chr(34)& binding=&chr(34)&gb2312&chr(34))
'//--XML-Leben an XML-Dokument anhängen
objXML.insertBefore objPi, objXML.childNodes(0)
Funktion beenden
'//============================================= = ==============================
'<!--XML-Dokument speichern-->
Öffentliche Funktion SaveXML()
'ProcessingInstruction()
objXml.save(xmlPath)
Funktion beenden
'<!--XML-Dokument speichern-->
Öffentliche Funktion SaveAsXML(sPath)
ProcessingInstruction()
objXml.save(sPath)
Funktion beenden
'//============================================= = ==================================
'Verwandte Statistiken
'<!--Wurzelknoten abrufen-->
Eigenschaft Get Root
Root = xmlDoc festlegen
End-Eigenschaft
'<!--Ermitteln Sie die Anzahl der untergeordneten Knoten unter dem Wurzelknoten-->
Eigenschaft Länge abrufen
Länge = xmlDoc.childNodes.length
End-Eigenschaft
'//============================================= = ==================================
'Verwandte Tests
Eigenschaft GetTestNode
TestNode = xmlDoc.childNodes(0).text
End-Eigenschaft
Unterricht beenden
</script>