- •If xmlParser.ParseError.ErrorCode Then
- •If Not nodeNode.Attributes Is Nothing Then
- •XmlParser.AppendChild(xmlParser.CreateComment("Текст комментария"))
- •VbCrLf & _
- •VbCrLf & _
- •VbCrLf & _
- •XmlParser.TransformNodeToObject objStylesheet, objResult
- •If xmlParser.DocumentElement.HasChildNodes Then
- •If nodeProduct.Attributes(0).Specified Then
XmlParser.AppendChild(xmlParser.CreateComment("Текст комментария"))
'Создание корневого элемента
Set rootNode = xmlParser.appendChild(xmlParser.createElement("ROOT"))
'Создание первого вложенного элемента
Set subNode = rootNode.appendChild(xmlParser.createElement("SUB"))
subNode.text = "Текст первого вложенного элемента"
'Создание второго вложенного элемента
Set subNode = rootNode.appendChild(xmlParser.createElement("SUB"))
'Создание раздела CDATA
subNode.appendChild(xmlParser.createCDATASection("<<< >>> &&& Произвольные текстовые данные"))
'Создание ссылки на примитив
subNode.appendChild(xmlParser.createEntityReference("amp"))
'Создание текстового узла
subNode.appendChild(xmlParser.createTextNode("Текст второго вложенного элемента"))
'Создание третьего вложенного элемента с использованием пространства имён
Set subNode = rootNode.appendChild(xmlParser.createNode(1, "html:H1", "http://www.w3c.org/TR/REC-html40/"))
subNode.text = "Заголовок HTML"
'Создание четвёртого и пятого вложенных элементов с использованием фрагмента
Set Fragment = xmlParser.createDocumentFragment
Fragment.appendChild(xmlParser.createElement("SUB"))
Fragment.appendChild(xmlParser.createElement("SUB"))
rootNode.appendChild(Fragment)
xmlParser.save("C:\Test.xml")
Добавим новый товар в начало нашего существующего "каталога товаров":
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
xmlParser.load "C:\Sample.xml"
'Получаем корневой элемент
Set rootPRODUCTS = xmlParser.documentElement
'Получаем первый товар
Set firstPRODUCT = xmlParser.documentElement.childNodes(0)
'Вставляем новый товар перед первым
Set newPRODUCT = rootPRODUCTS.insertBefore(xmlParser.createElement("PRODUCT"), firstPRODUCT)
'Устанавливаем атрибут "import" для нового товара
Set newAttr = xmlParser.createAttribute("import")
newAttr.value = "yes"
newPRODUCT.setAttributeNode(newAttr)
'Добавляем наименование новому товару
Set newTITLE = newPRODUCT.appendChild(xmlParser.createElement("TITLE"))
newTITLE.text = "Product #0"
'Добавляем сорт новому товару
Set newSORT = newPRODUCT.appendChild(xmlParser.createElement("SORT"))
'Добавляем цвет сорту
Set newCOLOR = newSORT.appendChild(xmlParser.createElement("COLOR"))
newCOLOR.text = "navy"
'Добавляем цену сорту
Set newPRICE = newSORT.appendChild(xmlParser.createElement("PRICE"))
newPRICE.text = "$0.01"
'Сохраняем весь документ
xmlParser.save("C:\Sample.xml")
Добавим новый товар в начало нашего существующего "каталога товаров" с помощью копирования:
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
xmlParser.load "C:\Sample.xml"
'Получаем корневой элемент
Set rootPRODUCTS = xmlParser.documentElement
'Получаем первый товар
Set firstPRODUCT = xmlParser.documentElement.childNodes(0)
'Вставляем копию первого товара перед первым товаром
Set newPRODUCT = rootPRODUCTS.insertBefore(firstPRODUCT.cloneNode(True), firstPRODUCT)
'Устанавливаем атрибут "import" для нового товара
newPRODUCT.setAttribute "import", "yes"
'Сохраняем документ
xmlParser.save("C:\Test.xml")
Меняем местами, удаляем товары:
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
xmlParser.load "C:\Sample.xml"
'Получаем корневой элемент
Set rootPRODUCTS = xmlParser.documentElement
'Получаем копии первого и второго товаров
Set firstPRODUCT = rootPRODUCTS.childNodes(0).cloneNode(True)
Set secondPRODUCT = rootPRODUCTS.childNodes(1).cloneNode(True)
'Меняем местами первый и второй товары
rootPRODUCTS.replaceChild secondPRODUCT, rootPRODUCTS.childNodes(0)
rootPRODUCTS.replaceChild firstPRODUCT, rootPRODUCTS.childNodes(1)
'Удаляем последний товар
rootPRODUCTS.removeChild rootPRODUCTS.lastChild
'Сохраняем документ
xmlParser.save("C:\Test.xml")
Обработка поддеревьев стилевыми таблицами
Перечень методов:
|
Описание |
transformNode(objStylesheet) |
Назначает стилевую таблицу для текущего узла и возвращает строку - результат обработки. Текущим узлом может быть весь XML-документ. |
transformNodeToObject(objStylesheet, objXMLDOMDocument) |
То же, что и transformNode, но результат не возвращается, а помещается в objXMLDOMDocument. |
Применяем существующую стилевую таблицу к каталогу товаров:
'Загружаем документ
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
xmlParser.load "C:\Sample.xml"
'Загружаем стилевую таблицу
Set objStylesheet = CreateObject("Msxml2.DOMDocument")
objStylesheet.async = False
objStylesheet.load "C:\Sample.xsl"
'Применяем стилевую таблицу к документу
WScript.Echo xmlParser.transformNode(objStylesheet)
Вывод товаров в обратном порядке с помощью XSL-сортировки:
'Загружаем документ
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
xmlParser.load "C:\Sample.xml"
'Загружаем стилевую таблицу
Set objStylesheet = CreateObject("Msxml2.DOMDocument")
objStylesheet.async = False
objStylesheet.loadXML _
"<?xml version='1.0' encoding='windows-1251'?>" & _
"<xsl:stylesheet xmlns:xsl='http://www.w3.org/TR/WD-xsl'>" & _