Sax парсер и символы &

Обсуждение сервиса товарной рекламы Микс-Товары
Ответить
Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Sax парсер и символы &

Сообщение vitocool2 » 17 апр 2008, 14:56

Подскажите, как вытащить Sax парсером строку, вида
domain.ru/?categoryID=527&productID=114419

Вся проблема в спец символе & ...... строка обрезается и выдаётся всё то, что стоит после него

После парсинга я получаю обрезанную строку productID=114419, но не domain.ru/?categoryID=527&productID=114419

Единственное что придумал, это менять спец символ на другую строку регулярным выражением, потом производить замену обратно. Подскажите грамотное решение!

Да и вообще с русскими символами работает некорректно, через раз, фигня какая то

Александр Сабаев
Сообщения: 7
Зарегистрирован: 08 июл 2005, 18:11

Re: Sax парсер и символы &

Сообщение Александр Сабаев » 17 апр 2008, 23:12

на самом деле метод character_data_handler
не гарантирует получение текстовых данных одним куском
в вашем случае он вызывается несколько раз - а сохраняете вы последнийй кусочек

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Sax парсер и символы &

Сообщение vitocool2 » 22 апр 2008, 12:48

Александр Сабаев писал(а):на самом деле метод character_data_handler
не гарантирует получение текстовых данных одним куском
в вашем случае он вызывается несколько раз - а сохраняете вы последнийй кусочек
как тогда быть?

Александр Сабаев
Сообщения: 7
Зарегистрирован: 08 июл 2005, 18:11

Re: Sax парсер и символы &

Сообщение Александр Сабаев » 03 май 2008, 01:12

vitocool2 писал(а):как тогда быть?
Конкатенировать, только на старте конкретного тега инициализировать соответствующую переменную

Domovod
Сообщения: 1
Зарегистрирован: 09 май 2008, 18:33

Сообщение Domovod » 09 май 2008, 18:39

Вот реальный пример, но не на PHP, а на python:

Код: Выделить всё

>>> import xml.sax.saxutils as saxutils
>>> saxutils.escape("&")
'&'
>>> saxutils.unescape(">")
'>'
>>> saxutils.unescape("A bunch of text with entities: & > <")
'A bunch of text with entities: & > <'

Ответить