2013-07-05 4 views
1

У меня есть XML-файл ниже. Я хочу пропустить этот файл и извлечь значение узла узла, как для узла com, получить значение имени, а затем цикл 2 раза, чтобы получить значения файла.Зацикливание через XML-файл с использованием VBScript

<common> 
    <com name="Test1.css"> 
    <file name="Tech.css"> 
    <file name="Comp.css"> 
    </com> 
    <com name="Test2.css"> 
    <file name="HR.css"> 
    <file name="HR2.css"> 
    </com> 
</common> 

Я начал использовать ниже VBScript, чтобы начать цикл, но я получаю требуется объект ошибка: Root Может кто-то пожалуйста, посмотрите и скажите мне, что я делаю неправильно здесь

Option Explicit

Dim Root 

Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 
objXMLDoc.load("C:\test\combineXML.xml")  
Set Root = objXMLDoc.documentElement 
WScript.Echo Root 
Set NodeList = Root.getElementsByTagName("common")  
For Each Elem In NodeList 
WScript.Echo Elem.text 

Next 

ответ

4

Ваша ошибка Object required:Root указывает, что произошла ошибка синтаксического анализа во время objXMLDoc.load() (потому что это единственная ситуация, когда documentElement будет установлен Nothing).

Проверить objXMLDoc.parseError.

На самом деле вы всегда должны проверить, были ли ошибки анализа после загрузки XML-документа.

В более общем случае вы не должны использовать ссылки на объекты, такие как documentElement, не проверяя их действительность. Это плохой стиль.


Подсказка: корневой узел и элемент документа две разные вещи.

  • Корневой узел / (по существу, корневой узел документа)
  • элемент документа в вашем случае <common>
  • Это означает: objXMLDoc.documentElement.getElementsByTagName("common") будет пустым
+0

Я проверил на objXMLDoc.parseError, и я получаю этот номер -1072896659 ... не уверен, что я делаю неправильно здесь – user505210

+0

Это означает, что ваш XML-документ не является корректным. В ошибке синтаксического анализа есть описание ошибки, прочитайте [документацию] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms756041 (v = vs.85) .aspx). – Tomalak

+0

Да, моя ошибка. Спасибо за помощь ур. Ребятам..чтобы закрыть дочерние элементы. – user505210

Смежные вопросы