Вниз
Скачать: CL | DM;

Символы "<" и ">" в IXMLDocument   Найти похожие ветки 

← →
Murad ©   (2004-04-23 18:05) [0]

Всем добрый день... проблема такая... Сохраняю текст в узел XML файла используя IXMLDocument... текст содержит символы "<"
и ">" при сохранении IXMLDocument заменяет их на < и > .  Как этого избежать ?


← →
Murad ©   (2004-04-23 18:06) [1]

...заменяет их на lt b rt


← →
Murad ©   (2004-04-23 18:07) [2]

пардон
...заменяет их на lt b gt c амперсандами


← →
Тимохов ©   (2004-04-23 18:12) [3]


> Как этого избежать ?

Вроде никак.
Т.е. может и можно (често не знаю).
Но наличие указанных сиволов в тексте противоречит сепецификации XML. Вернее противоречит <, а > заменяется на > за компанию. Также недопустимым является сочетание "]]>".

Вопрос, а чем вам это мешает?
Ведь при следующем чтении все обратно поменятеся на < и >?


← →
Тимохов ©   (2004-04-23 18:18) [4]

Вы же если пишите html экранируете < на <
В xml та же ситуация.


← →
Murad ©   (2004-04-23 18:20) [5]

2 Тимохов
 У меня в этом узле должен лежать HTML


← →
Тимохов ©   (2004-04-23 18:25) [6]

все-таки не понимаю что-вам не нравится.

1. есть спецификация xml. эта спецификация запрещает иметь неэкранированный символ <.
2. т.е. в файле хранится <, а в памяти парсера этот символ заменяется на <.
3. для того, чтобы хранить любые символы в xml предусмотрено следующие "<![CDATA[". В этой секции можно хранить все что угодно, хоть <. Нельзя только иметь сочетание
"]]>".
4. Допустим вы как-то добъектесь того, чтобы вне секции <![CDATA[ хранился неэкранированный <. Как вы себе представляете парсер должен понимать, что это не начало тэга, а просто символ. Поэтому и введена спецификация xml.


← →
Тимохов ©   (2004-04-23 18:26) [7]

Поправка

> 2. т.е. в файле хранится апперсенд+lt;,


← →
Тимохов ©   (2004-04-23 18:30) [8]

xml документ, который хранит неэкранированный символ < не является корректным.
можете сами проверить - напишите
<a>
abc<dt
</a>

Попробуйте открыть его лбой прогой, которая умеет открывать xml (у меня это internet explorer).
Будет ошибка.


← →
Murad ©   (2004-04-23 18:31) [9]

А с CDATA у меня и проблема... этот раздел не получается добавить в конкретный узел... так ведь?


← →
Тимохов ©   (2004-04-23 18:34) [10]


> Murad ©   (23.04.04 18:31) [9]
> А с CDATA у меня и проблема... этот раздел не получается
> добавить в конкретный узел... так ведь?

Почему.
Спецификации xml это не противоречит. Значт используемая вами объектная модель должна это делать (я так понимаю, что это парсер от macrosoft). Изучайте.

Все-таки.
Ответте на вопрос: чем вам не нравится наличие сиволов апперсенд+lt; в тексте? Вы же все равно этот текст читатете тем же парсером, а он заменить это на <.


← →
Murad ©   (2004-04-23 18:38) [11]

2Тимохов
 1. Метод CreateNode(...NodeType ...) есть только у IXMDocument
    и нету у IXMLNode
 
 2. Суть следующая - есть XML документ, который используя XSLT
    преобразуется в HTML... причем в этом документе есть узел
   (должен быть) который не преобразуется, а  весь его код  
   (HTML) должен попадать в выходной документ.


← →
Тимохов ©   (2004-04-23 18:43) [12]


> 2Тимохов
>  1. Метод CreateNode(...NodeType ...) есть только у IXMDocument
>     и нету у IXMLNode

Смотрите внимательнее.
Я когда-то пользовался msxml. Сейчас на память не помню.
Если не ошибаюсь, вы дожны сначала создать node методом createnode, а затем его добавить в детей другого нода. Практически уверен, что это так. С cdata надо работать таким же образом.


← →
Murad ©   (2004-04-23 18:48) [13]

Спасибо... буду надеяться что так получиться, хотя это как-то странно... просто узел можно создать, а узел определенного типа - через документ...


← →
Тимохов ©   (2004-04-23 18:51) [14]


> Murad ©   (23.04.04 18:48) [13]

Да меня тоже удивлял этот момент.

Вы все-таки подумайте, может не надо вам никакой cdata. Ведь в html неэкранированный < тоже не корректен, при этом < html прекрасно понимает.
Подумайте, есть ощущение, что вы не там копаете.


← →
Murad ©   (2004-04-23 19:00) [15]

нет... в этом плане я все верно делаю... спасибо... методы нашел... ща попробую заюзать


← →
Murad ©   (2004-04-23 19:03) [16]

кстати, а каким образом в элемент CDATA добавлять текстовое содержимое... неужели надо добавлять текст как бинарный поток ?
при попытке использовать SetText или SetValue - ругается


← →
Тимохов ©   (2004-04-23 19:08) [17]

Сильно не уверен в правоте ваших действий :((


← →
Murad ©   (2004-04-23 19:10) [18]

На каком основании :)))?


← →
Тимохов ©   (2004-04-23 19:12) [19]


> Murad ©   (23.04.04 19:10) [18]

На том, что вы считаете, что спрашиваете только вы здесь :))
Я задал вопрос: как вы собираетесь хранить символ "<" в html? Вы на него ответа не дали. Как ответ дадите, все сами поймете.


← →
Murad ©   (2004-04-23 19:14) [20]

Видимо я что-то не верно пояснил... у меня все получилось... спасибо вам большое... щас уже убегаю... если есть интерес в понедельник могу подробнее рассказать ... Murad@newmail.ru


← →
Тимохов ©   (2004-04-23 19:17) [21]

Видимо...



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

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.031 c
14-1074854685
Knight
2004-01-23 13:44
2004.04.11
Готика 2... где там брать ключи?


14-1079467489
kamerad
2004-03-16 23:04
2004.04.11
Можно ли написать антивирус на Delphi


3-1079102146
student
2004-03-12 17:35
2004.04.11
ошибка БДЕ 210С


3-1081343780
YurikGl
2004-04-07 17:16
2004.04.11
DBExpres Проблемы SQLStoredProc


7-1079718031
Шнур
2004-03-19 20:40
2004.04.11
Hook




   Наверх