无法从Vbscript中的.jdf文件加载节点

时间:2013-08-01 11:23:31

标签: object xpath vbscript nodes jdf

我正在尝试从.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 个答案:

答案 0 :(得分:1)

要处理错误,请检查

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

当selectSingleNode()失败时,显然你对源文件的假设(XPath表达式)是错误的。

答案 1 :(得分:0)

如果像//JDF/ResourceLinkPool/ComponentLink这样的XPath表达式没有选择输入文档中的元素,那么很可能您正在处理使用命名空间的文档,请参阅http://en.wikipedia.org/wiki/XML_namespaces

使用XPath 1.0时,类似/foo/bar的路径选择bar个{@ 1}}元素的子元素,而不使用任何名称空间的<{1}}元素,而使用格式为

的XML文档
foo

元素位于命名空间<foo xmlns="http://example.com/ns1"> <bar>baz</bar> </foo>

使用您的示例可能存在默认的命名空间声明(例如http://example.com/ns1),它要求您通过为命名空间定义前缀来更改XPath表达式,例如

xmlns="http://www.CIP4.org/JDFSchema_1_1"

并使用它:

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

MSXML的文档位于http://msdn.microsoft.com/en-us/library/windows/desktop/ms756048%28v=vs.85%29.aspx