Доброго времени суток.
Возникла следующая срочная проблема. Есть xml, вот из него кусок:
Item Price1="Price1">
[CDATA['Test']]>
Item>
Prices>
Получаю узел Item и из него собственно #cdata-section. свойство Text ==
А как мне получить именно то что в CDATA тоесть 'Test', ну кроме как парсить строчку.
Заранее благодарен, за ответ.
Нравится
Добрый день, Юрий!
Варианты:
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