Страница 1 из 1

VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 07.12.2009 (Пн) 3:36
kinrew
Доброго времени суток!

Пожалуйста, помогите с такой проблемой:
Пишу на VBA программу, которая создаёт xml-файл. Использую MSXML V.6.
Когда открываю полученный файл текстовым редактором, то он состоит всего из 2х строчек:
1) "<?xml version="1.0" encoding="UTF-8"?>";
2) всё остальное содержимое файла в одну строку.
Получается, что в текстовой файле result.xml ни только не создаётся древовидная структура (отступы в начале строки), но и не расставляются переходы на новые строки.
Это сильно затрудняет отладку программы, поскольку сторонний парсер, который анализирует сгенерённый файл, всегда указывает ошибку в строке №2, не позволяя вычислить ошибку.
В интернете информации не нашёл. Пока расставляю переходы на новую строку с помощью текстового редактора. Но при отладке на больших примерах это уже стало слишком накладным.

Как-нибудь можно заставить прогу создавать древовидную структуру в файле или хотя бы добавлять переходы на новую строку?
Спасибо за помощь!

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 07.12.2009 (Пн) 9:49
Денис
Какой текстовый редактор используется? В нем нет возможности посмотреть (и поменять) тип новой строки (UNIX/Windows)? Возможно тип новой строки генерится никсовый..

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 07.12.2009 (Пн) 17:57
burik
Денис писал(а):Возможно тип новой строки генерится никсовый..

Тогда как-то странно, что строки все-таки две.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 07.12.2009 (Пн) 23:20
iGrok
Ну да, у меня та же фигня была.
Для расстановки переносов использовал не то altova xml spy, не то xml alchemist..
В общем, отдельную софтину.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 08.12.2009 (Вт) 0:24
alibek
В объектной модели MSXML есть параметры, отвечающие за форматирование файла. Правда не помню, какие именно.
Но я бы советовал использовать внешнюю утилиту (например, xmllint), она более гибкая.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 08.12.2009 (Вт) 0:51
kinrew
Денис писал(а):Какой текстовый редактор используется? В нем нет возможности посмотреть (и поменять) тип новой строки (UNIX/Windows)? Возможно тип новой строки генерится никсовый..

Пробовал в AkelPad, в NotePad++. Тщетно. Да и скармливал линуксовому парсеру, он видит тоже только 2 строки.
Когда открываю файл в Opera'е, то она пишет: "This document had no style information.", но дерево с переносами выстраивает. Думаю, это из-за встроенных в неё возможностей.
Пробовал даже использовать MSXML4, но результата нет...
В NotePad++ включил отображение всех символов. В итоге, он показывает:
<?xml version="1.0" encoding="UTF-8"?>CR LF (только без пробела)
Во второй строке идёт сплошной текст (всё содержимое файла в одну строку). В конце второй строки тоже отображается "CR LF" (только без пробела).
alibek писал(а):В объектной модели MSXML есть параметры, отвечающие за форматирование файла.

Нашёл только DOMDocument60.preserveWhiteSpace. Причём, если поставить =True, то отображается вообще в одну строку. А если =False, то так же в 2 строки. Имелся ввиду этот параметр? Может что-то я не нашёл? Очень бы помог метод стандартными средствами VB (чтобы отдельно руками не повторять с завидной регулярностью операцию конвертирования при помощи стороннего софта).
iGrok писал(а):Для расстановки переносов использовал не то altova xml spy, не то xml alchemist..В общем, отдельную софтину.

alibek писал(а):Но я бы советовал использовать внешнюю утилиту (например, xmllint), она более гибкая.

Конечное, если деваться будет некуда, то придётся использовать сторонний софт. Но надеюсь найти решение с помощью VB, т.к. при напряжённой отладке очень неприятно каждый раз запускать кроме макроса ещё и стороннюю софтину.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 15.01.2010 (Пт) 11:32
Rojohn
Имхо: мучил эту проблему долго и сделал выгрузку XML как построчную запись в текстовик. А читаю уже библиотекой...
Всё работает здОрово! Может как-нить и функции форматирования найду, но там у меня ещё проблема с типовой таблицей была (<!DOCTYPE >) - эту строчку без таблицы не вставишь, только если всё как текст писАть....

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 15.01.2010 (Пт) 12:07
Antonariy
Visual Studio .NET 2003 это умеет.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 30.06.2011 (Чт) 14:29
-=TsA=-
Вы не поверите, но эти три строки кода решат ваши проблемы :D

Код: Выделить всё
        Dim FileXml As New XmlDocument
        FileXml.Load("File.xml")
        FileXml.Save("File.xml")


PS. На входе не форматированный XML файл, на выходе уже отформатированный.

Re: VBA не добавляет переходы на новые строки в XML-файле

СообщениеДобавлено: 30.06.2011 (Чт) 15:11
Rojohn
Возможно, ещё раз спасибо! Но я уже некоторое время программирую только в VBA, да и то мелкие прикладнушки:) Может когда-нибудь и пригодится, если опять попросят...