我在我的MS Project VBA代码中使用xPath解析/提取XML时遇到了困难。
为什么我不能选择这个节点中的一个节点?
为什么我不能选择这个节点中的一个节点?
Set nodes = xml.SelectNodes("/config/ProjectFile")
For Each node In nodes
With Me.lbProjList
'.AddItem (xmlText(node.SelectSingleNode("/FileName")))
'.Column(1, i) = xmlText(node.SelectSingleNode("/LastSaveDate"))
End With
i = i + 1
Debug.Print i & " file " & node.xml ' Shows the XML I expected
Debug.Print " Name: " & node.SelectSingleNode("/FileName").Text ' Doesn't work! Error 91
Next node
我很乐意提供帮助!
谢谢!
以下是完整的VBA代码:
Private Sub ProjListFill()
Dim i As Integer
Dim xml As MSXML2.DOMDocument60
Dim nodes As MSXML2.IXMLDOMNodeList 'CustomXMLNodes???
Dim node As MSXML2.IXMLDOMNode 'CustomXMLNode???
Dim n As CustomXMLPart 'CustomXMLNode???
' clear form before fill it
Me.lbProjList.Clear
Me.txtHeadline.value = ""
Me.txtUpdateURL.value = ""
Me.txtBoxParam.value = ""
Me.txtBoxPrefix.value = ""
Set xml = readXML(CustomProperty("XMTMLMonitoring_AppPath") & "\" & m2w_config("SubFolder") & "\" & m2w_config("SubFolderData") & "\" & m2w_config("XMLConfigFileName"))
i = 0
Set nodes = xml.SelectNodes("/config/ProjectFile")
For Each node In nodes
With Me.lbProjList
'.AddItem (xmlText(node.SelectSingleNode("/FileName")))
'.Column(1, i) = xmlText(node.SelectSingleNode("/LastSaveDate"))
End With
i = i + 1
Debug.Print i & " file " & node.xml ' Shows the XML I expected Debug.Print " Name: " & node.SelectSingleNode("/FileName").Text ' Doesn't work! Error 91
Next node
Debug.Print i & " Project files found in config.xml"
' fill text boxes
Me.txtHeadline.value = xmlText(xml.SelectSingleNode("/config/Custom/Headline"))
Me.txtUpdateURL.value = xmlText(xml.SelectSingleNode("/config/Custom/UpdateURL"))
Me.txtBoxParam.value = xmlText(xml.SelectSingleNode("/config/Custom/BoxParam"))
Me.txtBoxPrefix.value = xmlText(xml.SelectSingleNode("/config/Custom/BoxPrefix"))
ExitProjListFill:
Exit Sub
End Sub
以下是XML代码:
<config id="config" ConfigSaveDate="2011-03-31 21:32:55" ConfigSchemaVersion="1.02">
<Custom>
<DateFormat>yyyy-mm-dd hh:mm:ss</DateFormat>
<Headline>Project Overview</Headline>
<UpdateHref></UpdateHref>
<BoxParam>ModelYear</BoxParam><BoxPrefix>MY </BoxPrefix>
</Custom>
<Program>
<DateFormat>yyyy-mm-dd hh:mm:ss</DateFormat>
</Program>
<ProjectFile ProjectFileName="projectfile1.mpp">
<RevisionNumber>201</RevisionNumber>
<FileName>projectfile1.mpp</FileName>
<LastSaveDate>2011-03-23 16:45:19</LastSaveDate>
</ProjectFile>
<ProjectFile ProjectFileName="projectfile2bedeleted.mpp">
<RevisionNumber>115</RevisionNumber>
<FileName>projectfile2b.mpp</FileName>
<LastSaveDate>2011-03-31 21:12:55</LastSaveDate>
</ProjectFile>
<ProjectFile ProjectFileName="projectfile2.mpp">
<RevisionNumber>315</RevisionNumber>
<FileName>projectfile3.mpp</FileName>
<LastSaveDate>2011-03-31 21:32:55</LastSaveDate>
</ProjectFile>
</config>