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

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

XMLDocument преврашает знаки тега <> в &laquo;& lt;&raquo;


Страницы:   1 2 3

Kolan ©   (2007-03-14 19:28:00) 

Зачем ему это?
Я вообще по су ти хочу добавить текст с тегами, и чтобы он не превратил теги в «& lt;» , создал соответствующие ноды…


palva   (2007-03-16 00:07:00) [21]

Вот я попробовал создать файл на Turbo Delphi.
Пытался попробовать разные возможности.

procedure TForm1.FormCreate(Sender: TObject);
var
 e, n: IXMLNode;
begin
 XMLDocument1.Active := True;
 XMLDocument1.Encoding := 'Windows-1251';
 XMLDocument1.AddChild('BODY', '');
 XMLDocument1.ChildNodes[1].Text := 'Мой текст';
 e := XMLDocument1.DocumentElement.AddChild('B', '');
 e.Text := 'elementarnyj text';
 n := XMLDocument1.CreateNode('b478925fdgf', ntText);
 XMLDocument1.DocumentElement.ChildNodes.Add(n);
 XMLDocument1.SaveToFile('ddd.xml');
end;

Получился такой ddd.xml

<?xml version="1.0" encoding="Windows-1251"?>
<BODY>Мой текст elementarnyj textb478925fdgf</BODY>

который корректно открывается эксплорером.


palva   (2007-03-15 22:09:00) [22]

Вы предъявили неправильно составленный элемент BODY. Символы " недопустимы в текстах. Их надо заменять на " Далее, после < сразу должно идти имя элемента (без пробела).

А вообще возможно, конечно.
Читать можно первоисточник на сайте W3C.org или любую книжку по XML. Даже на Delphimaster есть какая-то статья.


Kolan   (2007-03-15 21:23:00) [23]

Хоть скажите возможно этот в принципе или нет...


Kolan   (2007-03-15 20:08:00) [24]

Подскажите что прочесть по XML + Delphi, а то вопросов куча и видно все дурацкие...

Вот если есть:
<BODY>ааа  < CODE >"ббббб"< /CODE > ввввв "гггггг"</BODY>

Как получить
ааа ввввв "гггггг"
То есть без  < CODE >"ббббб"< /CODE >


Kolan   (2007-03-15 18:32:00) [25]

> Так формально он ведь не символы хочет записать. Он хочет,
> чтоб внутри элемента появились новые ноды.

Да. ВОт этого я хотел...


HomeUser   (2007-03-15 12:01:00) [26]

Я когда мне в xml нужно добавить какойто контент содержащий теги, запихиваю это дело в CDATA (<![CDATA[......]]>, незнаю как это сделано в FXMLMessage, потому как с такой штукой не встречался (если же все это тесто потом идет через xsl в браузер, а преформатированный текст содержит HTML теги, то нужно достать этот тескт таким макаром: <xsl:value-of select="text" disable-output-escaping="yes"/>)

Вообщем может поможет.....


palva   (2007-03-15 10:19:00) [27]

Вы же писали вначале, что хотите, чтобы он
> создал соответствующие ноды…
Значит это уже не текст будет.


palva   (2007-03-15 10:17:00) [28]

> вообще по сути хочу добавить текст с тегами
Разве так? Тогда у вас все правильно получается. Эти символы ДОЛЖНЫ маскироваться. А при чтении любой программой, которая знает формат xml, эти символы должны восстанавливаться.


Reindeer Moss Eater   (2007-03-15 10:10:00) [29]

2.Делаю:
FXMLMessage.XML.Text := '<MESSAGE><TITLE></TITLE><BODY></BODY></MESSAGE>';


А вот не надо так делать.
Хочешь сам формировать тело документа - пиши свой xml документ.
А если пользуешься IXMLDocument - используй его методы.


Reindeer Moss Eater   (2007-03-15 09:48:00) [30]

да нет, почему же.

вообще по сути хочу добавить текст с тегами


palva   (2007-03-15 09:40:00) [31]

> Reindeer Moss Eater ©   (15.03.07 09:36) [18]
> Не ваша это проблема как символы тэгов хранятся внутри нода или атрибута.

Так формально он ведь не символы хочет записать. Он хочет, чтоб внутри элемента появились новые ноды.


Reindeer Moss Eater   (2007-03-15 09:36:00) [32]

Чего вы паритесь?
Не ваша это проблема как символы тэгов хранятся внутри нода или атрибута.
Записал ы xml символ тэга - считал из xml символ тэга.


Kolan   (2007-03-14 21:56:00) [33]

> Все равно браузер на тэги внутри TITLE правильно реагировать
> не будет.

А причем тут браузер?


> Сформировать TITLE как элемент и добавить его в MESSAGE
> как Child, предварительно удалив старый TITLE

Да так и думал сделать.


> Вы хотите просто добавить текстовую последовательность,
> содержащую символы < и >.

Не этого не хочу.


> Вы хотите добавить внутрь нода TITLE нод T.

Понятно вроде…


>
> Компонент ведет себя правильно.

Я не сомневаюсь :)


Zeqfreed   (2007-03-14 20:49:00) [34]

Тут два варианта:
1. Вы хотите добавить внутрь нода TITLE нод T. Тогда и надо оперировать на уровне нодов, а не текста.
2. Вы хотите просто добавить текстовую последовательность, содержащую символы < и >. Тогда, если вам принципиально, чтобы они содержались внутри xml-документа в первозданном виде, то их надо поместить внутри секции CDATA.

Компонент ведет себя правильно.


palva   (2007-03-14 20:34:00) [35]

> Честно не понял…
Сформировать TITLE как элемент и добавить его в MESSAGE как Child, предварительно удалив старый TITLE


palva   (2007-03-14 20:29:00) [36]

Все равно браузер на тэги внутри TITLE правильно реагировать не будет.


Kolan   (2007-03-14 20:25:00) [37]

> этот компонент

Это IXMLDocument


> т.е. через свои методы, т.о. должен быть child нодом.

Честно не понял…


Kolan   (2007-03-14 20:24:00) [38]

Есть конечно вариант:
%s
А потом Format'ом, но хочется понять где я не прав…


Eraser   (2007-03-14 20:24:00) [39]

> [10] Kolan ©   (14.03.07 20:19)

мдя.. по видимому этот компонент позволяет вставлять ноды только явно, т.е. через свои методы, т.о. <TITLE> должен быть child нодом.


Kolan   (2007-03-14 20:19:00) [40]

[Pascal Error] KDMCMessageBuilder.pas(85): E2129 Cannot assign to a read-only property


Страницы:   1 2 3

Наверх

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