parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

вариант через объектную модель документа

insomnia 22.03.2007 01:05

вариант примерно как DOM в javascript
очень, кстати, повезло, что скриптовая система позволяет создавать объекты и делать split ;)

есть кусок html
<table>
<tr>
<td>
ячейка
<img src="test.jpg" />
</td>
</tr>
</table>

нужно разделить по символу <
получится массив

table>
tr>
td>ячейка
img src="text.jpg" />
/td>
/tr>
/table>

каждая строка делится дальше по символу >
получаются 2 части:
1. имя тэга + аттрибуты
2. текст

из первой части достается имя тэга

каждый тэг помечается "тип"
1. открывающийся <table>
2. simpleType <img ... />
3. закрывающийся </table>

после разборки html получается массив тэгов, их нужно превратить в дерево узлов, при этом закрывающиеся тэги удаляются
узел - то же, что и тэг, только содержит другие узлы

получается цепочка узлов:
table содержит tr содержит td ...

для вырезания части html дерево узлов обходится рекурсивно от корня по всем ветвям
при этом подсчитывается, какой объем занимает каждая ветка
те ветки, которые не укладываются в указанный объем срезаются

после срезания не нужного дерево узлов преобразуется обратно к html

если нужно, пример на Парсере могу отправить по почте или выложить на форуме