Доброго времени суток.
Возникла следующая срочная проблема. Есть xml, вот из него кусок:

 Prices>
      Item Price1="Price1">
        [CDATA['Test']]>
      Item>
    Prices>

Получаю узел Item и из него собственно #cdata-section. свойство Text ==

""

А как мне получить именно то что в CDATA тоесть 'Test', ну кроме как парсить строчку.

Заранее благодарен, за ответ.

Нравится

6 комментариев

Добрый день, Юрий!
Варианты:
1. Парсить вручную
2. Использовать регулярные выражения

Дмитрий, спасибо за предыдущий ответ.
Тем не менее возник еще вопрос.
Вот сам xml у меня в кодировке UTF-8 при парсе этого файла получаю данные в таком виде:

<![CDATA[ МИНСК ]]>

При изменении кодировки файла, скажем, на cp1251 - таже история. Насколько я понимаю, менять кодировку надо при присвоении значения в переменную(или как бы кодировку самой переменной О_о или как-то подругому О_о), но как это сделать не знаю... Или может есть какие-то другии варианты решения моей проблемы...

Подскажите пожалуйста. Заранее благодарен за помощь.

Господа, подскажите хоть что-нибудь. Весьма буду презнателен...

Добрый день, Юрий.
Если для разбора xml-файла Вы используете XMLStorage и XMLStorageNode, то можно использовать свойство XMLStorage.Encoding, в котором можно анализировать текущую кодировку или устанавливать требуемую. Обычно информация о кодировке xml-файла сохраняется в самом файле.
В качестве эксперимента можно создать с помощью XMLStorage новый файл, и проанализировать его в Блокноте, чтобы понять, где именно в структуре xml следует сохранять информацию о кодировке. Затем в Вашем файле нужно указать правильную кодировку явно. В итоге Вы получите чтение файла в указанной кодировке и без проблем.

Дмитрий, здравствуйте.
Да, xml разбирается именно по средству XMLStorage и XMLStorageNode. В процессе пробую менять кодировки, но это не приводит к результату. Наблюдается следующая штука:
при утсановке Storage.Encoding = 'cp1251';(к примеру) свойство Storage.Text отображает русские символы верно. Но, когда начинаю обращаться к узлам RootNode, то отображается

МИНСК

Пробовал создавать тем же механизмом xml и так же открывать его. Та же история. Сам Storage распознает русский текст, а RootNode уже его не понимает.
Такое ощущение, что дочерние узлы просто игнорируют кодировку заданную в корневом <?xml?> О_о

все разобрался. раньше не заметил подобной темы...
http://community.terrasoft.ua/forum/topic/2117

короче говоря вместо TSObjectLibrary.XMLStorage был заюзан Microsoft.XMLDOM.
Последний, кстати, и быстрее разбирает файл... xml в 127 метров загружается(парситься) около минуты. В то время как TSObjectLibrary.XMLStorage отрыбатывает где-то за 2-3

Показать все комментарии