Навигация по узлам 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.