Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вывести такое (<?xml version="1.0" encoding="windows-1251" ?>


VID ©   (2006-12-18 19:17:00) 

var
 Doc: IXMLDOMDocument;
begin
 Doc := CoDomDocument.create;
 Doc.load('c:\test.xml');
 
вопрос как вывести на экран (наприер ShowMessage) строку наподобие этой: <?xml version="1.0" encoding="windows-1251" ?> , но которая будет соответстовать загруженному файлую
(как ваще называется эта строка?)


Reindeer Moss Eater   (2006-12-19 15:41:00) [1]

Тебе и говорят, что у тебя оптический обман.
Причина в другом.


VID   (2006-12-19 15:33:00) [2]

Блин... естесвенно я это знаю. Вот поэтому я и удивлен. Меня как будто не хотят слышать!


Reindeer Moss Eater   (2006-12-19 15:30:00) [3]

Парсеру глубого по барабану, отформатирован xml документ или он одной строкой представлен.


VID   (2006-12-19 14:59:00) [4]

Блин я серьезно.. у меня эти два файла. оно так и есть!


Reindeer Moss Eater   (2006-12-19 13:51:00) [5]

Это оптический обман.


VID   (2006-12-19 13:47:00) [6]

Я знаю это!
Но ответь тогда, почему так получилось: почему два идентичных по структуре и содержанию файла, один неотформатирован весь в одной строке. другой отформатирован (множество строк. отступы), и тот первый успешно прогружается, а второй - нет ?


Reindeer Moss Eater   (2006-12-19 13:10:00) [7]

documentElement Property
Contains the rootelement of the document.

<ВотМойДокументЭлемент>
<инет_никакого_вершен_и_энкодинг/>
</ВотМойДокументЭлемент>


Reindeer Moss Eater   (2006-12-19 13:05:00) [8]

А с чего ты вдруг решил, что строка

<?xml version="1.0" encoding="windows-1251" ?>

это и есть DocumеntElement?


VID   (2006-12-19 12:35:00) [9]

Спасибо. Ценные сведения.
Но с чего все началось ?

Я написал маленький XML форматтер, которые преобразует форматирует XMLину описанную в одной строке, и приводит её к благообразному виду: с отступами и тд.

Но столкнулся с непонятным для меня явлением: Получающаяся на выходе XML (данные и структура которой один-в-один соответствует исходной) при попытке загрузать её в документ не прогружается. Т.е.:

Doc: IXMLDOMDocument;
Doc.load('result_xml');
и doc.documentElement = nil !

Хотя xml прогрузилась без ошибок и правильно оформлена (за это не беспокойтесь).

Если же в первой строке, результирующего XML файла добавить строку типа
<?xml version="1.0" encoding="windows-1251" ?>, то эта XML отлично прогружается.

Но вся фишка в том, что в ИСХОДНОЙ XML не было такой строки ! И это, однако, не мешало ей спокойно прогружаться в документ и doc.documentElement не был равен nil! Вот в чем тут дело, кто знает ?


Reindeer Moss Eater   (2006-12-19 12:16:00) [10]

Поймите, никакого c:\test.xml на самом деле может и не существовать.

Пока документ не сериализован на какой-то носитель, строки с указанием енкодинга может вообще не существовать. даже если её создать явно

doc.createProcessingInstruction('xml','version="1.0" encoding="windows-1251"')


Reindeer Moss Eater   (2006-12-19 12:14:00) [11]

doc.childNodes.item[0].text;


VID   (2006-12-19 12:10:00) [12]

криво. содержимое Doc может достигать пол-сотни мегабайт. ненужная игра с памятью


Плохиш   (2006-12-19 11:05:00) [13]

Если [2] не помогает, то

Doc.SaveToXml(s);
SetLenght(s, Pos('>'));
ShowMessage(s);


VID   (2006-12-19 10:28:00) [14]

Поймите, никакого c:\test.xml на самом деле может и не существовать.
Doc можно заполнить данныим и вручную, создавая в нем элементы и наполняя их аттрибутами. От этого задача не меняется.


VID   (2006-12-19 10:24:00) [15]

Вы меня пугаете :)
Все что у нас есть это Doc: IXMLDOMDocument. И в него прогружен некий XML. Вот. И нужно из этого документа (вызывав какие-нибудь его методы) получить строку типа
<?xml version="1.0" encoding="windows-1251">
которая, в случае сохранения Doc.Save() была бы первой строкой в сохраненном файле.


MetalFan   (2006-12-19 00:35:00) [16]

...
StringList.LoadFromFile(...);
ShowMessage(StringList[0]);
...

или Doc.xml ?


umbra   (2006-12-18 20:12:00) [17]

это я, пожалуй вспылил :(


umbra   (2006-12-18 19:31:00) [18]

ShowMessage(doc.XML[0]);


VID   (2006-12-18 19:17:00) [19]

Delphi7, winxp


Наверх

Титульная страница Поиск, карта сайта Написать письмо