为什么Msxml DocumentElement / SelectSingleNode不返回任何内容?

DocumentElement属性和SelectSingleNode保持不返回任何东西,我已经validation了xml加载正确,问题似乎在于xmlparsing器。 xml没有任何命名空间,所以不需要设置。

Private Function ParseWord(word As String) As String Dim tempFile As String tempFile = Environ("temp") & "\" & "temporaryWord" & ".xml" Call CreateFile(tempFile, word) Dim xmlDoc As Object Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0") With xmlDoc .async = False .setProperty "SelectionLanguage", "XPath" .validateOnParse = False .Load tempFile '.setProperty "SelectionNamespaces", "" '.Namespaces = False End With Dim xmlElement As Object Set xmlElement = xmlDoc.DocumentElement If xmlElement Is Nothing Then MsgBox "error in element" Exit Function End If Dim nodeXML As Object Set nodeXML = xmlElement.SelectSingleNode("/definitions/definition/text") If nodeXML Is Nothing Then MsgBox "error" Else MsgBox nodeXML.Text ParseWord = nodeXML.Text End If End Function 

xml源代码: http : //api.wordnik.com/v4/word.xml/intransigent/definitions?limit=200&includeRelated=true&useCanonical=true&includeTags=false&api_key=a2a73e7b926c924fad7001ca3111acd55af2ffabf50eb4ae5

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><definitions><definition sequence="0"> <textProns/><sourceDictionary>ahd-legacy</sourceDictionary><exampleUses/><relatedWords/><labels/> <citations/><word>intransigent</word><attributionText>from The American Heritage® Dictionary of the English Language, 4th Edition</attributionText><text>Refusing to moderate a position, especially an extreme position; uncompromising.</text><partOfSpeech>adjective</partOfSpeech><score>0.0</score></definition></definitions> 

createFile函数来自这里:

http://www.jpsoftwaretech.com/vba/msxml-object-library-routines/#createfile

从string加载xml对我有用(可能是string编码问题?)

 Sub test() 'Cell A1 contains the xml ParseXML (Range("A1")) End Sub Private Function ParseXML(xmlString As String) As String Dim tempFile As String Dim xmlDoc As Object Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0") With xmlDoc .async = False .setProperty "SelectionLanguage", "XPath" .validateOnParse = False .LoadXML xmlString '.setProperty "SelectionNamespaces", "" '.Namespaces = False End With Dim xmlElement As Object Set xmlElement = xmlDoc.DocumentElement If xmlElement Is Nothing Then MsgBox "error in element" Exit Function End If Dim nodeXML As Object Set nodeXML = xmlElement.SelectSingleNode("/definitions/definition/text") If nodeXML Is Nothing Then MsgBox "error" Else MsgBox nodeXML.Text ParseXML = nodeXML.Text End If End Function