Код операции xmldom для упрощения кода, который необходимо объединить с xml <script Language=vbscript runat=server>
'============================================== = ===========
Автор: Будь собой
Время: 15 марта 2005 г.
=============================================== ==========
Класс XMLClass
Частный объект objXml
Частный xmlDoc
Частный xmlPath
'//============================================= = =============
'<!--События во время инициализации класса и выхода из системы-->
Подкласс_инициализация
Установите objXml = Server.CreateObject(MSXML2.DOMDocument)
objXml.preserveWhiteSpace = true
objXml.async = ложь
Конец субтитра
Подкласс_Завершить
Установить objXml = Ничего
Конец субтитра
'//============================================= = =============
'<!--Создать новый XML-документ-->
Открытая функция CreateNew(sName)
Установите tmpNode = objXml.createElement(sName)
objXml.appendChild(tmpNode)
Установите CreateNew = tmpNode
Конечная функция
'<!--Читать XML-документ снаружи -->
Открытая функция OpenXml(sPath)
OpenXml=False
sPath=Server.MapPath(sPath)
'Response.Write(sPath)
xmlPath = sPath
Если objXml.load(sPath) Тогда
Установите xmlDoc = objXml.documentElement.
OpenXml=Истина
Конец, если
Конечная функция
'<!--Читать XML-строку снаружи -->
Публичная подписка LoadXml(sStr)
objXml.loadXML(sStr)
Установите xmlDoc = objXml.documentElement.
Конец субтитра
Публичная подпрограмма InceptXml(xObj)
Установите objXml = xObj
Установите xmlDoc = xObj.documentElement.
Конец субтитра
'//============================================= = =============
'<!--Добавить новый узел-->
Открытая функция AddNode(sNode,rNode)
' sNode STRING имя узла
'rNode OBJECT добавляет ссылку на вышестоящий узел узла.
'============================================== = ============
ДимТмпноде
Установите TmpNode = objXml.createElement(sNode)
rNode.appendChild TmpNode
Установите AddNode = TmpNode.
Конечная функция
'<!--Добавить новый атрибут-->
Открытая функция AddAttribute(sName,sValue,oNode)
' sName Имя атрибута STRING
' Значение атрибута sValue STRING
' Объект oNode OBJECT с добавленными атрибутами
'============================================== = ============
oNode.setAttribute sName,sValue
Конечная функция
'<!--Добавить содержимое узла-->
Открытая функция AddText(FStr,cdBool,oNode)
Тусклый tmpText
Если cdBool Тогда
Установите tmpText = objXml.createCDataSection(FStr)
Еще
Установите tmpText = objXml.createTextNode(FStr)
Конец, если
oNode.appendChild tmpText
Конечная функция
'============================================== = ============================================== = =====
'<!--Получить значение указанного атрибута узла-->
Открытая функция GetAtt(aName,oNode)
' Имя атрибута aName STRING
' oNode Ссылка на узел ОБЪЕКТА
'============================================== = ============
дим tmpValue
tmpValue = oNode.getAttribute(aName)
GetAtt = tmpValue
Конечная функция
'<!--Получить имя узла-->
Открытая функция GetNodeName(oNode)
' oNode Ссылка на узел ОБЪЕКТА
GetNodeName = oNode.nodeName
Конечная функция
'<!--Получить содержимое узла-->
Открытая функция GetNodeText(oNode)
' oNode Ссылка на узел ОБЪЕКТА
GetNodeText = oNode.childNodes(0).nodeValue
Конечная функция
'<!--Получить тип узла-->
Открытая функция GetNodeType(oNode)
' oNode Ссылка на узел ОБЪЕКТА
GetNodeType = oNode.nodeValue
Конечная функция
'<!--Найти все узлы с одинаковым именем-->
Открытая функция FindNodes(sNode)
Затемнение tmpNodes
Установите tmpNodes = objXml.getElementsByTagName(sNode)
Установите FindNodes = tmpNodes
Конечная функция
'<!--Проверить наличие идентичного узла-->
Открытая функция FindNode(sNode)
ДимТмпноде
Установите TmpNode=objXml.selectSingleNode(sNode)
Установите FindNode = TmpNode.
Конечная функция
'<!--Удалить узел-->
Открытая функция DelNode(sNode)
Тусклый TmpNodes,Nodesss
Установите TmpNodes=objXml.selectSingleNode(sNode)
Установите Nodesss=TmpNodes.parentNode
Nodesss.removeChild(TmpNodes)
Конечная функция
'<!--Заменить узел-->
Открытая функция replaceNode(sNode,sText,cdBool)
'replaceChild
Уменьшить TmpNodes,tmpText
Установите TmpNodes=objXml.selectSingleNode(sNode)
'AddText sText,cdBool,TmpNodes
Если cdBool Тогда
Установите tmpText = objXml.createCDataSection(sText)
Еще
Установите tmpText = objXml.createTextNode(sText)
Конец, если
TmpNodes.replaceChild tmpText,TmpNodes.firstChild
Конечная функция
Инструкция обработки частной функции
'//--Создаем XML-объявление
Тусклый объект objPi
Установите objPi = objXML.createProcessingInstruction(xml, version=&chr(34)&1.0&chr(34)&coding=&chr(34)&gb2312&chr(34))
'//--Добавляем жизнь xml к документу xml
objXML.insertBefore objPi, objXML.childNodes(0)
Конечная функция
'//============================================= = =============================
'<!--Сохранить XML-документ-->
Открытая функция SaveXML()
'Инструкция Обработки()
objXml.save(xmlPath)
Конечная функция
'<!--Сохранить XML-документ-->
Открытая функция SaveAsXML(sPath)
Инструкция Обработки()
objXml.save(sPath)
Конечная функция
'//============================================= = ==================================
'Сопутствующая статистика
'<!--Получить корневой узел-->
Свойство Получить root
Установить корень = xmlDoc
Конечная собственность
'<!--Получить количество дочерних узлов под корневым узлом-->
Свойство Получить длину
Длина = xmlDoc.childNodes.length
Конечная собственность
'//============================================= = ==================================
'Связанные тесты
Свойство GetTestNode
TestNode = xmlDoc.childNodes(0).text
Конечная собственность
Конечный класс
</скрипт>