Как экспортировать XML из URL (функции) в файл в VBA
До того, как мы запустили Windows XP и использовали LiveLink, все работало нормально. Недавно мы перешли на Content Server и Windows 7.
В руководстве по экспорту Opentext xml есть функция, позволяющая экспортировать XML из URL. Код VBA используется для загрузки этого URL и поместить его в MSXML2.DOMDocument60.
Dim xmldoc As MSXML2.DOMDocument60
Set xmldoc = New MSXML2.DOMDocument60
xmldoc.Load (xmlURL)
После миграции это больше не работает. Я изменил URL на новый сервер и прочитал новое руководство. Когда я набираю URL в IE8, я получаю xml, но он не отформатирован должным образом... Перед объявлением xml есть 2 пробела, которые вызывают проблемы, и - и + для скрытия / раскрытия также рассматриваются как символы. Если я копирую / вставляю в notepad++, удаляю 2 лишних пробела и заменяю все "-<" на "<", а затем загружаю этот файл в мой Domdocument, все работает. Кодировка UTF-8 правильная, я попробовал несколько параметров, которые можно передать в функцию xmlexport, но ничего не изменилось.
Мой план состоит в том, чтобы экспортировать XML-файл во временный текстовый файл из моего URL-адреса и исправить его, чтобы я мог передать правильный XML-код своей функции, которая заполняет мою БД. Я искал способ сделать это, но пока ничего не получалось. Спасибо за помощь.
2 ответа
Я использую функцию:
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
чтобы сохранить мою веб-страницу в doc.xml, я загружаю ее в DOMdoc
xmldoc.Load (path_to_doc.xml)
Можно использовать VBscript для чтения текстового файла в переменную, а затем переписать переменную в другой текстовый файл, за исключением первых двух символов.
Вот страница, где обсуждается нечто подобное: чтение и запись в файл с использованием VBScript
Это может быть что-то вроде:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("c:\scripts\servers.txt", ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
Set objTextFile = objFSO.CreateTextFile("c:\scripts\servers2.txt", True)
objTextFile.Write (right(strText, len(strText)-2))
Я не проверял это, но по сути это то, что вы хотите сделать. Я думаю.