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

Если название форума вам о чём-то говорит, то значит, внутри вы найдете что-то для себя полезное.
kinrew
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 15.02.2006 (Ср) 18:02
Откуда: Москва

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

Сообщение kinrew » 07.12.2009 (Пн) 3:36

Доброго времени суток!

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

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

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

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

Сообщение Денис » 07.12.2009 (Пн) 9:49

Какой текстовый редактор используется? В нем нет возможности посмотреть (и поменять) тип новой строки (UNIX/Windows)? Возможно тип новой строки генерится никсовый..
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

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

Сообщение burik » 07.12.2009 (Пн) 17:57

Денис писал(а):Возможно тип новой строки генерится никсовый..

Тогда как-то странно, что строки все-таки две.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4247
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

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

Сообщение iGrok » 07.12.2009 (Пн) 23:20

Ну да, у меня та же фигня была.
Для расстановки переносов использовал не то altova xml spy, не то xml alchemist..
В общем, отдельную софтину.
label:
cli
jmp label

alibek
Большой Человек
Большой Человек
 
Сообщения: 14086
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

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

Сообщение alibek » 08.12.2009 (Вт) 0:24

В объектной модели MSXML есть параметры, отвечающие за форматирование файла. Правда не помню, какие именно.
Но я бы советовал использовать внешнюю утилиту (например, xmllint), она более гибкая.
Lasciate ogni speranza, voi ch'entrate.

kinrew
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 15.02.2006 (Ср) 18:02
Откуда: Москва

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

Сообщение kinrew » 08.12.2009 (Вт) 0:51

Денис писал(а):Какой текстовый редактор используется? В нем нет возможности посмотреть (и поменять) тип новой строки (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, т.к. при напряжённой отладке очень неприятно каждый раз запускать кроме макроса ещё и стороннюю софтину.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

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

Сообщение Rojohn » 15.01.2010 (Пт) 11:32

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

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

Сообщение Antonariy » 15.01.2010 (Пт) 12:07

Visual Studio .NET 2003 это умеет.
Лучший способ понять что-то самому — объяснить это другому.

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

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

Сообщение -=TsA=- » 30.06.2011 (Чт) 14:29

Вы не поверите, но эти три строки кода решат ваши проблемы :D

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


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

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

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

Сообщение Rojohn » 30.06.2011 (Чт) 15:11

Возможно, ещё раз спасибо! Но я уже некоторое время программирую только в VBA, да и то мелкие прикладнушки:) Может когда-нибудь и пригодится, если опять попросят...
Делитесь опытом и Вам воздастся! Кто разместит полезный код - тому воздастся вдвойне! :)


Вернуться в XML/XSL/XHTML

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList