Ronni
Новичок
Проблема XML парсинга
Привет!
Столкнулся с неприятной особенностью парсинга XML, который содержит в себе юникод.
Парсинг веду с помощью стандартного парсера в PHP - а цель: получить из xml хэш (xml обладает заранее известной структурой).
Проблема следующая: парсер считает некоторые комбинации символов русского юникода разрывными и вызывает обработчик данных тэга несколько раз (в зависимости от того, сколько разрывных символов внутри тэга он встретит).
Стандартный способ решения проблемы: в обработчике данных тэга нужно объединять данные тэга (конкатенацией). А в обработчике закрывающего тэга просто скидывать все, что встретили внутри тэга, в элемент хэша (имя которого = имени тэга).
Но! Из-за простой конкатенации склеиваются некоторые слова: вместо "были распроданы" получаем "былираспроданы". Если во время конкатенации ставить пробельчик между строками, то возникает другая ошибка: слова неправильно "расклеиваются": "были объявлены" превращается в "были о бъявлены".
Погуглив, выяснил, что это скорее всего особенность парсинга библиотеки xmlint.
Кто-нибудь знает как решать эту проблему?
Привет!
Столкнулся с неприятной особенностью парсинга XML, который содержит в себе юникод.
Парсинг веду с помощью стандартного парсера в PHP - а цель: получить из xml хэш (xml обладает заранее известной структурой).
Проблема следующая: парсер считает некоторые комбинации символов русского юникода разрывными и вызывает обработчик данных тэга несколько раз (в зависимости от того, сколько разрывных символов внутри тэга он встретит).
Стандартный способ решения проблемы: в обработчике данных тэга нужно объединять данные тэга (конкатенацией). А в обработчике закрывающего тэга просто скидывать все, что встретили внутри тэга, в элемент хэша (имя которого = имени тэга).
Но! Из-за простой конкатенации склеиваются некоторые слова: вместо "были распроданы" получаем "былираспроданы". Если во время конкатенации ставить пробельчик между строками, то возникает другая ошибка: слова неправильно "расклеиваются": "были объявлены" превращается в "были о бъявлены".
Погуглив, выяснил, что это скорее всего особенность парсинга библиотеки xmlint.
Кто-нибудь знает как решать эту проблему?
