我正在尝试从.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")
答案 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}}元素,而使用格式为
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。