Как удалить DIV, содержащий другие DIV, используя анализатор HTML / DOM или Xpath - PullRequest
0 голосов
/ 27 января 2012

У меня есть строка, содержащая тег DIV для удаления.
Я могу распознать DIV для удаления по его параметрам (в данном случае определенному стилю), который является уникальным.Этот DIV содержит много HTML внутри, включая другие DIV.

<div style="padding-top: 10px; clear: both; width: 100%;">
    { a lot other divs here}
</div>

Как удалить его из строки?

РЕДАКТИРОВАТЬ : (Любая полезная техника приветствуется)

РЕДАКТИРОВАТЬ 2 : я знаю о неудобстве использования выражений эргуалр.Если у вас есть решение, использующее regexs, то это тоже приветствуется, потому что это универсальный процесс синтаксического анализа, а текст очень маленький, а HTML хорошо продуман (на самом деле это XHTML).

РЕДАКТИРОВАТЬ 3: Если возможно, приведите пример, используя HTML/DOM parser or Xpath или что-то еще.Проблема здесь не в выборе данных, а в удалении данных.Можно сделать с помощью HTML/DOM parser or Xpath?

Ответы [ 3 ]

1 голос
/ 27 января 2012

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

Подробнее об обычных языках вы можете прочитать здесь: http://en.wikipedia.org/wiki/Regular_language, и о классификации языков Хомского здесь: http://en.wikipedia.org/wiki/Chomsky_hierarchy

1 голос
/ 27 января 2012

Никогда не используйте регулярные выражения для анализа (или других действий) с HTML. См. this Ответ переполнения стека, почему.

Используйте XML-парсер, например, через DOM-Tree.

0 голосов
/ 28 января 2012

XPath является самым простым и работает с JQuery.Проверьте по ссылке.http://saxon.sourceforge.net/saxon6.5/expressions.html

Так как он основан на местоположении (пути), вы можете указать, насколько глубоко вы хотите пойти, например, как вы работаете с путями к файлам.

Вы можете попробовать такие вещи, как // {Tagвыше div} / div

Это отличается от // div, потому что // не имеет значения, с чего начать, он получит все элементы Div в любом месте документа, поэтому ваш стартовый тег после // должен быть уникальным,Вы можете даже начать с // html и просто / вниз по дереву DOM, например, введя адрес, если хотите.Между html и вашим первым div не должно быть много уровней.

...