Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

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

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

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


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

Delphi7, winxp


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

ShowMessage(doc.XML[0]);


 
umbra ©   (2006-12-18 20:12) [3]

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


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

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

или Doc.xml ?


 
VID ©   (2006-12-19 10:24) [5]

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


 
VID ©   (2006-12-19 10:28) [6]

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


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

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

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


 
VID ©   (2006-12-19 12:10) [8]

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


 
Reindeer Moss Eater ©   (2006-12-19 12:14) [9]

doc.childNodes.item[0].text;


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

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

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

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


 
VID ©   (2006-12-19 12:35) [11]

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

Я написал маленький 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 13:05) [12]

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

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

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


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

documentElement Property
Contains the root element of the document.

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


 
VID ©   (2006-12-19 13:47) [14]

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


 
Reindeer Moss Eater ©   (2006-12-19 13:51) [15]

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


 
VID ©   (2006-12-19 14:59) [16]

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


 
Reindeer Moss Eater ©   (2006-12-19 15:30) [17]

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


 
VID ©   (2006-12-19 15:33) [18]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.052 c
3-1163673556
cad2206
2006-11-16 13:39
2007.02.11
Подключение баз MySQL


15-1169457248
TIF
2007-01-22 12:14
2007.02.11
SMS - программно


15-1169214750
FAskerQ
2007-01-19 16:52
2007.02.11
PopupMenu


1-1166438371
DelphiLexx
2006-12-18 13:39
2007.02.11
Как запретить рисовать окантовку, в DBGridEh


15-1169200526
Prohodil Mimo
2007-01-19 12:55
2007.02.11
почему мигают лампочки на кулере?