Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизXMLDocument преврашает знаки тега <> в &laquo;& lt;&raquo; Найти похожие ветки
← →
Kolan © (2007-03-14 19:28) [0]Зачем ему это?
Я вообще по су ти хочу добавить текст с тегами, и чтобы он не превратил теги в «& lt;» , создал соответствующие ноды…
← →
Kolan © (2007-03-14 19:37) [1]> , создал
, a создал
← →
Kolan © (2007-03-14 19:57) [2]Главное если так:
FXMLMessage.XML.Text := "<MESSAGE><TITLE></TITLE><BODY></BODY></MESSAGE>";
То все нормально — почему?
← →
palva © (2007-03-14 20:02) [3]> Я вообще по су ти хочу добавить текст с тегами
Текст с тэгами это уже не текст, в смысле не свойство text, а свойство xml.
Можно добавлять дочерние узлы, с типами TEXT ELEMENT и т. д.
← →
Kolan © (2007-03-14 20:08) [4]Еще раз вот что я хочу:
1.Есть документ:FXMLMessage
2.Делаю:FXMLMessage.XML.Text := "<MESSAGE><TITLE></TITLE><BODY></BODY></MESSAGE>";
Теперь хочу вTITLE
засунуть, допустим, «фывфывфы <T>asdasd</T>asdasd».
Пытаюсь так:FXMLMessage.ChildNodes[0].ChildNodes.FindNode(rsMessageBody).Text := "фывфывфы <T>asdasd</T>asdasd";
Он заменяет теги…
Как надо?
← →
Kolan © (2007-03-14 20:10) [5]Те в итоге должно быть:
<MESSAGE><TITLE>фывфывфы <T>asdasd</T>asdasd</TITLE><BODY></BODY></MESSAGE>
А у меня:<MESSAGE><TITLE>фывфывфы <T>asdasd</T>asdasd</TITLE><BODY></BODY></MESSAGE>
← →
Eraser © (2007-03-14 20:10) [6]> [4] Kolan © (14.03.07 20:08)
> Теперь хочу в TITLE засунуть, допустим, «фывфывфы <T>asdasd</T>asdasd».
и правильно что превращает, т.к. <> запрещены внутри тегов, да и иногда не только внутри.
к примеру в xsl <> можно указывать только для тэгов.
← →
Kolan © (2007-03-14 20:11) [7]А у меня:
<MESSAGE><TITLE>фывфывфы & lt;T& gtasdasd& lt;/T& gtasdasd</TITLE><BODY></BODY></MESSAGE>
← →
Kolan © (2007-03-14 20:14) [8]> и правильно что превращает, т.к. <> запрещены внутри тегов
ГлавноеTITLE
внутриMESSAGE
можно, аT
внутриTITLE
— нельзя?
← →
palva © (2007-03-14 20:17) [9]Попробуй
FXMLMessage.ChildNodes[0].ChildNodes.FindNode(rsMessageBody).Xml := "фывфывфы <T>asdasd</T>asdasd";
но не гарантирую.
← →
Kolan © (2007-03-14 20:19) [10][Pascal Error] KDMCMessageBuilder.pas(85): E2129 Cannot assign to a read-only property
← →
Eraser © (2007-03-14 20:24) [11]> [10] Kolan © (14.03.07 20:19)
мдя.. по видимому этот компонент позволяет вставлять ноды только явно, т.е. через свои методы, т.о. <TITLE> должен быть child нодом.
← →
Kolan © (2007-03-14 20:24) [12]Есть конечно вариант:
<MESSAGE><TITLE>%s</TITLE><BODY></BODY></MESSAGE>
А потом Format"ом, но хочется понять где я не прав…
← →
Kolan © (2007-03-14 20:25) [13]> этот компонент
ЭтоIXMLDocument
> т.е. через свои методы, т.о. <TITLE> должен быть child нодом.
Честно не понял…
← →
palva © (2007-03-14 20:29) [14]Все равно браузер на тэги внутри TITLE правильно реагировать не будет.
← →
palva © (2007-03-14 20:34) [15]> Честно не понял…
Сформировать TITLE как элемент и добавить его в MESSAGE как Child, предварительно удалив старый TITLE
← →
Zeqfreed © (2007-03-14 20:49) [16]Тут два варианта:
1. Вы хотите добавить внутрь нода TITLE нод T. Тогда и надо оперировать на уровне нодов, а не текста.
2. Вы хотите просто добавить текстовую последовательность, содержащую символы < и >. Тогда, если вам принципиально, чтобы они содержались внутри xml-документа в первозданном виде, то их надо поместить внутри секции CDATA.
Компонент ведет себя правильно.
← →
Kolan © (2007-03-14 21:56) [17]> Все равно браузер на тэги внутри TITLE правильно реагировать
> не будет.
А причем тут браузер?
> Сформировать TITLE как элемент и добавить его в MESSAGE
> как Child, предварительно удалив старый TITLE
Да так и думал сделать.
> Вы хотите просто добавить текстовую последовательность,
> содержащую символы < и >.
Не этого не хочу.
> Вы хотите добавить внутрь нода TITLE нод T.
Понятно вроде…
>
> Компонент ведет себя правильно.
Я не сомневаюсь :)
← →
Reindeer Moss Eater © (2007-03-15 09:36) [18]Чего вы паритесь?
Не ваша это проблема как символы тэгов хранятся внутри нода или атрибута.
Записал ы xml символ тэга - считал из xml символ тэга.
← →
palva © (2007-03-15 09:40) [19]> Reindeer Moss Eater © (15.03.07 09:36) [18]
> Не ваша это проблема как символы тэгов хранятся внутри нода или атрибута.
Так формально он ведь не символы хочет записать. Он хочет, чтоб внутри элемента появились новые ноды.
← →
Reindeer Moss Eater © (2007-03-15 09:48) [20]да нет, почему же.
вообще по сути хочу добавить текст с тегами
← →
Reindeer Moss Eater © (2007-03-15 10:10) [21]2.Делаю:
FXMLMessage.XML.Text := "<MESSAGE><TITLE></TITLE><BODY></BODY></MESSAGE>";
А вот не надо так делать.
Хочешь сам формировать тело документа - пиши свой xml документ.
А если пользуешься IXMLDocument - используй его методы.
← →
palva © (2007-03-15 10:17) [22]> вообще по сути хочу добавить текст с тегами
Разве так? Тогда у вас все правильно получается. Эти символы ДОЛЖНЫ маскироваться. А при чтении любой программой, которая знает формат xml, эти символы должны восстанавливаться.
← →
palva © (2007-03-15 10:19) [23]Вы же писали вначале, что хотите, чтобы он
> создал соответствующие ноды…
Значит это уже не текст будет.
← →
HomeUser (2007-03-15 12:01) [24]Я когда мне в xml нужно добавить какойто контент содержащий теги, запихиваю это дело в CDATA (<![CDATA[......]]>, незнаю как это сделано в FXMLMessage, потому как с такой штукой не встречался (если же все это тесто потом идет через xsl в браузер, а преформатированный текст содержит HTML теги, то нужно достать этот тескт таким макаром: <xsl:value-of select="text" disable-output-escaping="yes"/>)
Вообщем может поможет.....
← →
Kolan © (2007-03-15 18:32) [25]> Так формально он ведь не символы хочет записать. Он хочет,
> чтоб внутри элемента появились новые ноды.
Да. ВОт этого я хотел...
← →
Kolan © (2007-03-15 20:08) [26]Подскажите что прочесть по XML + Delphi, а то вопросов куча и видно все дурацкие...
Вот если есть:<BODY>ааа < CODE >"ббббб"< /CODE > ввввв "гггггг"</BODY>
Как получитьааа ввввв "гггггг"
То есть без < CODE >"ббббб"< /CODE >
← →
Kolan © (2007-03-15 21:23) [27]Хоть скажите возможно этот в принципе или нет...
← →
palva © (2007-03-15 22:09) [28]Вы предъявили неправильно составленный элемент BODY. Символы " недопустимы в текстах. Их надо заменять на &quot; Далее, после < сразу должно идти имя элемента (без пробела).
А вообще возможно, конечно.
Читать можно первоисточник на сайте W3C.org или любую книжку по XML. Даже на Delphimaster есть какая-то статья.
← →
palva © (2007-03-16 00:07) [29]Вот я попробовал создать файл на 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-16 00:10) [30]На форуме тэг интерпретировался как "полужирный". Надо было изобразить так:
<BODY>Мой текстelementarnyj textb478925fdgf</BODY>
← →
palva © (2007-03-16 00:12) [31]Да, все равно не получилось.
← →
Kolan © (2007-03-16 11:41) [32]> Далее, после < сразу должно идти имя элемента (без пробела)
> .
> На форуме тэг интерпретировался как "полужирный".
Поэтому и пробелы... :)
> Получился такой ddd.xml
Во-во то что надо.<BODY>Мой текст< B >elementarnyj text< /B >b478925fdgf</BODY>
Как теперь получитьМой текст b478925fdgf
. Те тот текст что лежит вBODY
но не вB
PS
Понятно что пробелов в< B >
нет, это из-за форума...
← →
Kolan © (2007-03-16 12:15) [33]> Читать можно первоисточник на сайте W3C.org или любую книжку
> по XML
Я читал про сам XML но там нет ничего про то как работать из программ...
← →
palva © (2007-03-16 12:54) [34]Тэг 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;
← →
palva © (2007-03-16 13:01) [35]Пробел между текстами нужно вставить
+ " "
← →
Kolan © (2007-03-16 13:11) [36]ААА те в ноде BODY есть 3 нода
1.Мой текст
с именем #text
2.<BQQQ>elementarnyj text</BQQQ>
c именем BQQQ
3. иb478925fdgf
с именем #text
Вот чего я не понимал. Я непонимал что это за#text
Кажется теперь дошло :)
← →
palva © (2007-03-16 13:18) [37]В свою очередь второй нод типа "элемент" содержит дочерний нод типа "текст". Но если мы берем Text от какого-нибудь разветвленного элемента, то по всему дереву дочерних нодов тексты будут собраны и сцеплены.
← →
Kolan © (2007-03-16 14:21) [38]> Но если мы берем Text от какого-нибудь разветвленного элемента,
> то по всему дереву дочерних нодов тексты будут собраны
> и сцеплены.
То есть как?
Если например попроситьBODY.Text
(ну понятно что BODY - это нод), то скажет что это не текстовый элемент...
← →
Reindeer Moss Eater © (2007-03-16 14:52) [39]Еще раз для тех кто в танке.
Не надо самому формировать боди xml документа.
Записывай в NodeValue все что хочешь, и считаешь обратно оттуда все что хочешь.
А если сам решил формировать тело xml, то нефик пытаться заставить парсить свое творение тех, кто соблюдает стандарты.
← →
Kolan © (2007-03-16 15:00) [40]> Еще раз для тех кто в танке.
:) это про меня :)
> А если сам решил формировать тело xml, то нефик пытаться
> заставить парсить свое творение тех, кто соблюдает стандарты.
Так ведь парситься же, и браузер нормально отображает. Те документ является правильно оформленным...
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.038 c