Навигация по узлам XML в VBScript для манекена

Я пытаюсь написать сценарий, который будет манипулировать некоторыми данными для меня в xml-файле. Я довольно новичок в VBScript, но имею VB.NET и фон VBA, поэтому я чувствую, что знаю, что делаю.

Я думал, что, вероятно, есть лучший способ навигации по файлу, а не много вызова InStr() или аналогичного для каждой строки, чтобы увидеть, есть ли то, что я ищу. Моей изначальной идеей было использовать несколько методов, которые я видел в VB.NET из системы.XML, так как я видел узел навигация по функциям и членам в этом.

после исследования этого я не могу найти способ импортировать пространство имен (System.XML, или иначе) в VBScript без его запуска на веб-странице. Я решил искать другие варианты вместо того, чтобы тратить больше времени на поиски этого.

оказывается, есть и другие способы сделать то, что я хочу, используя методы и объекты, которые специально касаются навигации по узлам XML-файла. Я узнал, что некоторые распространенные примеры "системы" (за неимением лучшего термина, потому что я уверен, что это неправильно) кажутся DOM и XPath.

Я начал с исследования XPath (так как я видел, что XPath считается выше DOM в нескольких местах, таких как: обход всех узлов в XML-файле с помощью VBScript). Я не мог найти ничего, чтобы описать основы XPath в vbscript. Есть много синтаксиса для путей и тому подобного, но я не мог найти ничего, что описывает самые основы того, как на самом деле это назвать синтаксис VBScript, чтобы использовать его. Поэтому я перешел к следующему варианту.

затем я нашел много немного разных статей/вопросов / и т. д. О DOM. Поэтому я попробовал. Ни один из них не сработал, все дали мне ошибки. В основном, казалось, что объект DOM никогда не загружается правильно. Вот лишь некоторые из методов, которые я пробовал для этого:

С MSDN: руководство для начинающих по XML DOM:

Set objParser = CreateObject( "Microsoft.XMLDOM" )
Dim xDoc As MSXML.DOMDocument
Set xDoc = New MSXML.DOMDocument

If xDoc.Load("C:My Documentscds.xml") Then
   msgbox("Success!")
Else
   msgbox("Failure!")
End If

этот возвращенный сбой каждый время.

на основе другого метода:

dim xmlDom
set xmlDom = createobject("MSXML2.DOMDocument")
xmlDom.async = false
xmlDom.load ("C:MyFileLocationMyFile.xml")

а затем я попробовал несколько вещей, чтобы определить, работает ли он как окна сообщений для каждого имени узла в xmlDom.функцию documentelement.

Я пробовал так много других вещей, которые я даже не могу вспомнить большинство из них.

Я просто не знаю, что еще я могу попробовать, или почему это не работает для меня. Я просто в недоумении, что еще я могу попробовать по-другому, все еще имея синтаксис, который может работа.

Итак, мой вопрос: Как я могу перемещаться по XML-файлу с помощью VBScript без сценария, встроенного в веб-страницу или иным образом? Мне нужно знать экстремальные основы.

Я знаю, что мой вопрос, вероятно, кажется глупым и невежественным, так как это должна быть легко доступная информация, но я действительно не могу найти основы, которые мне нужно понять, как перемещаться по узлам любым способом, используя только VBScript (не в html или asp-файле или что-то в этом роде).

1 ответов


вот небольшой пример:

Предположим, у вас есть файл под названием C:\Temp\Test.xml С этим содержание:

<?xml version="1.0"?>
<root>
   <property name="alpha" value="1"/>
   <property name="beta" value="2"/>
   <property name="gamma" value="3"/>
</root>

тогда вы можете использовать этот VBScript:

Set objDoc = CreateObject("MSXML.DOMDocument")
objDoc.Load "C:\Temp\Test.xml"

' Iterate over all elements contained in the <root> element:

Set objRoot = objDoc.documentElement
s = ""
t = ""
For Each child in objRoot.childNodes
   s = s & child.getAttribute("name") & " "
   t = t & child.getAttribute("value") & " "
Next
MsgBox s    ' Displays "alpha beta gamma "
MsgBox t    ' Displays "1 2 3 "

' Find a particular element using XPath:

Set objNode = objDoc.selectSingleNode("/root/property[@name='beta']")
MsgBox objNode.getAttribute("value")     ' Displays 2

Я надеюсь, что это поможет вам начать работу с VBScript и XML.