Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.28.50] |
|
Сообщ.
#1
,
|
|
|
Вот столкнулся с таким вопросом:
В php (4.3.9) использую разборщик XML (xml_parser_create, xml_parse и т.д.). Пытаюсь разобрать следующее: Цитата Настроенные обработчики (начала элемента, конца элемента и данных) получают следующее (вывожу подряд):<div> </div> Цитата Всё правильно. Но вот незадача - после закрытия первого открытого тега обработчик работать не хочет. То есть делаю так:BEGIN: DIV DATA END: DIV Цитата Всё равно выводится только<div> </div> <br> ... Цитата Это первый вопрос: я знаю, конечно, что xml без рутового элемента - это не по стандарту, но нельзя ли мне как нибудь разобрать файл до конца.BEGIN: DIV DATA END: DIV Далее. Разбираю Цитата Обработчики получают:<div> ... <br> ... </div> Цитата То есть теряется последний элемент. Всегда. А вот если закрыть элемент <br> : <br/> то всё нормально, обработчик конечного элемента срабатывает (END: DIV) Вот второй вопрос: можно ли мне и этого избежать любым способом.BEGIN: DIV DATA: BEGIN: BR DATA: Спасибо всем кто осилил что я тут понаписал |
Сообщ.
#2
,
|
|
|
dark_barker
Цитата А ты еще подсунь ему бинарник, а потом удивляйся, почему не работает. вот если закрыть элемент <br> : <br/> то всё нормально <br> - это ошибка. Правильно будет <br /> или <br></br> |
Сообщ.
#3
,
|
|
|
nerezus
Я так и написал - я знаю, что это не по правилам, но можно ли выбраным мной способом (или другим, но стандартным, т.к. перенастраивать сервер и/или добавлять модули не предполагается) решить мою проблему. Пусть он не находит конец этих тегов незакрытых, они мне не нужны - мне надо обработать только определенные элементы (они заведомо будут по стандарту), пусть для этих неправильных элементов срабатывает только обработчик стартового элемента, но причем тут последний элемент то? А вручную парсить html-ку не очень охота |
Сообщ.
#4
,
|
|
|
dark_barker ну а тогда какие претензии к парсеру XML, если ты ему даешь не XML, а черт знает что.
|
Сообщ.
#5
,
|
|
|
Если тебе нужно обработать только определённые элементы - стоит ли вообще заморачиваться с XML-парсером? Иногда и регулярных выражений бывает более, чем достаточно.
|
Сообщ.
#6
,
|
|
|
nerezus
Ну опять 25 SiMM Да, но мне надо заменить что то типа <simple:element attr1="val1" attr2="val2" attr3="val3"/> |
Сообщ.
#7
,
|
|
|
Цитата dark_barker @ Не вижу никаких неприятностей. Врочем - хозяин - барин. Регуляркой тут разбирать ООчень неприятно. |
Сообщ.
#8
,
|
|
|
Попробуй развить следующую мысль:
$xml = '<root>'.str_replace('<br>', '<br/>', $html).'</root>'; parse($xml); |
Сообщ.
#9
,
|
|
|
polyglott
Так мне все что-ли так заменять. Сколько их незакрывающихся то бывает в хтмл? Как минимум <hr> <br> <img > итд итп. Но надо подумать на этот счёт |