как экспортировать 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 в свою функцию, которая заполняет мою БД. Я искал способ сделать это, но пока никто не работал. Спасибо за помощь.


person trixrabbit    schedule 16.10.2014    source источник


Ответы (2)


Можно использовать 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))

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

person n8.    schedule 16.10.2014
comment
Ty за ответ, я нашел аналогичный подход, который не требует от меня изменения текста - person trixrabbit; 17.10.2014

Я использую функцию:

 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)
person trixrabbit    schedule 17.10.2014