Как экспортировать 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))

Я не проверял это, но по сути это то, что вы хотите сделать. Я думаю.

Другие вопросы по тегам