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;» , создал соответствующие ноды…


Kolan   (2007-03-17 19:22:00) [1]


> Выделенная строка приводит к AV :(

А надо было сделать документ активным. Все с этим понятно...
С & вопрос так и не решен,. :(


Kolan   (2007-03-17 19:16:00) [2]

Может я сам документ не так создаю...

constructor TMessageBuilder.Create;
var
 TempDoc: TXMLDocument;
begin
 TempDoc := TXMLDocument.Create(nil);
 TempDoc.DOMVendor := GetDOMVendor('MSXML');
 //TempDoc.Version := '1.0';

 FXMLMessage := TempDoc;
end;


Выделенная строка приводит к AV :(


Kolan   (2007-03-17 19:05:00) [3]

Он меня убьёт это XML.

Node.Text := &что-то
Он & заменяет на amp ;

Как сделать чтобы он не заменял...


Kolan   (2007-03-16 15:38:00) [4]

> В то время как обычная технология Microsoft DOM работает:

А теперь понял(я просто думал вы считаете я сторонним чем-то пользуюсь), может попробавать...


palva   (2007-03-16 15:36:00) [5]

> Вы очем вообще, какая компонента...:
TXMLDocument это компонента. Я кладу ее на форму с закладки Internet.
В то время как обычная технология Microsoft DOM работает:

{$APPTYPE CONSOLE}
uses ActiveX, ComObj;
var
 x: OleVariant;
begin
 CoInitialize(Nil);
 x := CreateOleObject('MSXML2.DomDocument');
 x.loadXML('<BODY>asd<ttt>fgh</ttt>jkl</BODY>');
 WriteLn(x.documentElement.text); // asdfghjkl
end.


Kolan   (2007-03-16 15:20:00) [6]

Я еще не пробовал(проект дома), но думаю что разобрался, благодарю plava :)


Kolan   (2007-03-16 15:19:00) [7]

> Какая-то недоделанная компонента.

Вы очем вообще, какая компонента...:
var
 Doc: IXMLDocument
berin
 Doc := TXMLDocument.Create(nil);


palva   (2007-03-16 15:17:00) [8]

> Если например попросить BODY.Text (ну понятно что BODY - это нод), то скажет что это не текстовый элемент...

В самом деле. Какая-то недоделанная компонента. Обычный микрософтовский DOM такую возможность предоставляет.


Reindeer Moss Eater   (2007-03-16 15:17:00) [9]

Ага. Только браузер видит другую структура документа.


Kolan   (2007-03-16 15:00:00) [10]

> Еще раз для тех кто в танке.

:) это про меня :)

> А если сам решил формировать тело xml, то нефик пытаться
> заставить парсить свое творение тех, кто соблюдает стандарты.

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


Reindeer Moss Eater   (2007-03-16 14:52:00) [11]

Еще раз для тех кто в танке.
Не надо самому формировать боди xml документа.
Записывай в NodeValue все что хочешь, и считаешь обратно оттуда все что хочешь.
А если сам решил формировать тело xml, то нефик пытаться заставить парсить свое творение тех, кто соблюдает стандарты.


Kolan   (2007-03-16 14:21:00) [12]

> Но если мы берем Text от какого-нибудь разветвленного элемента,
> то по всему дереву дочерних нодов тексты будут собраны
> и сцеплены.

То есть как?
Если например попросить BODY.Text(ну понятно что BODY - это нод), то скажет что это не текстовый элемент...


palva   (2007-03-16 13:18:00) [13]

В свою очередь второй нод типа "элемент" содержит дочерний нод типа "текст". Но если мы берем Text от какого-нибудь разветвленного элемента, то по всему дереву дочерних нодов тексты будут собраны и сцеплены.


Kolan   (2007-03-16 13:11:00) [14]

ААА те в ноде BODY есть 3 нода
1. Мой текстс именем #text
2. <BQQQ>elementarnyj text</BQQQ>c именем BQQQ
3. и b478925fdgfс именем #text

Вот чего я не понимал. Я непонимал что это за #text


Кажется теперь дошло :)


palva   (2007-03-16 13:01:00) [15]

Пробел между текстами нужно вставить + ' '


palva   (2007-03-16 12:54:00) [16]

Тэг B я заменил другим.

procedure TForm1.FormCreate(Sender: TObject);
begin
 XMLDocument1.XML.Add
 ('<?xml version="1.0" encoding="Windows-1251"?>');
 XMLDocument1.XML.Add
 ('<BODY>Мой текст<BQQQ>elementarnyj text</BQQQ>b478925fdgf</BODY>');
 XMLDocument1.Active := True;
 Label1.Caption := XMLDocument1.DocumentElement.ChildNodes[0].Text +
 XMLDocument1.DocumentElement.ChildNodes[2].Text;
end;


Kolan   (2007-03-16 12:15:00) [17]

> Читать можно первоисточник на сайте W3C.org или любую книжку
> по XML

Я читал про сам XML но там нет ничего про то как работать из программ...


Kolan   (2007-03-16 11:41:00) [18]

> Далее, после < сразу должно идти имя элемента (без пробела)
> .


> На форуме тэг интерпретировался как "полужирный".

Поэтому и пробелы... :)


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

Во-во то что надо.
<BODY>Мой текст< B >elementarnyj text< /B >b478925fdgf</BODY>

Как теперь получить Мой текст b478925fdgf. Те тот текст что лежит в BODYно не в B

PS
 Понятно что пробелов в < B >нет, это из-за форума...


palva   (2007-03-16 00:12:00) [19]

Да, все равно не получилось.


palva   (2007-03-16 00:10:00) [20]

На форуме тэг интерпретировался как "полужирный". Надо было изобразить так:
<BODY>Мой текст elementarnyj textb478925fdgf</BODY>


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

Наверх

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