Не могу загрузить узел из.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() не работает.