2
Свойство DocumentElement и SelectSingleNode продолжают ничего не возвращать, я проверил, что xml загружается правильно, проблема, похоже, лежит в синтаксисе xml. В xml нет пространств имен, поэтому его не нужно устанавливать.Почему Msxml DocumentElement/SelectSingleNode ничего не возвращает?
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 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
Код функции '' 'ParseWord (...)' '' отлично работает. но как выглядит функция '' 'CreateFile (...)' ''? Не могли бы вы также опубликовать этот код? Созданный файл должен использовать UTF-8, есть специальный знак в тексте xml, это '' 'R''' в круге после слова« Наследие ». – dee