Не могу загрузить узел из.jdf файла в Vbscript

Я пытаюсь получить значение из узла в файле.jdf. Это дает нам ошибку

object required: 'curNode'

в строке № 13 - inputFolder = curNode.getAttribute("Amount")

Мы действительно не знаем, что делать... любая помощь, пожалуйста?

Спасибо

'creates the msxml object
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
Dim xmlDataPath,retVal
xmlDataPath = "C:\Users\liatte\Desktop\Aviv Omer Neta\JDFs to Txt\a.jdf"

'load the xml data of the script
retVal=xmlDoc.load(xmlDataPath)

'get input folder
Set curNode = xmlDoc.selectSingleNode("//JDF/ResourceLinkPool/ComponentLink")
Dim inputFolder
inputFolder = curNode.getAttribute("Amount")

2 ответа

Решение

Если выражение XPath, как //JDF/ResourceLinkPool/ComponentLink не выбирает элементы во входном документе, тогда, вероятно, вы обрабатываете документ, который использует пространства имен, см. http://en.wikipedia.org/wiki/XML_namespaces.

С XPath 1.0 путь вроде /foo/bar выбирает bar дочерние элементы foo элементы без пространства имен, в то время как с XML-документом формы

<foo xmlns="http://example.com/ns1">
  <bar>baz</bar>
</foo>

элементы находятся в пространстве имен http://example.com/ns1,

В вашем примере, вероятно, есть объявление пространства имен по умолчанию (например, xmlns="http://www.CIP4.org/JDFSchema_1_1") который требует от вас изменения выражений XPath путем определения префикса для пространства имен, например

xmlDoc.setProperty "SelectionNamespaces", "xmlns:jdf='http://www.CIP4.org/JDFSchema_1_1'"

и используя его:

Set curNode = xmlDoc.selectSingleNode("//jdf:JDF/jdf:ResourceLinkPool/jdf:ComponentLink")

Документация для MSXML находится по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/ms756048%28v=vs.85%29.aspx.

Чтобы устранить ошибку, проверьте

If curNode Is Nothing Then
   ... 
Else
   Dim inputFolder
   ...
End If

Очевидно, что ваши предположения (выражение XPath) об исходном файле неверны, когда selectSingleNode() не работает.

Другие вопросы по тегам