Удаление информации CSS из HTML в Java - PullRequest
3 голосов
/ 18 ноября 2011

Существует ли какая-либо библиотека или предварительно написанный код для удаления атрибутов css из кода HTML.

Требуется, чтобы код Java анализировал входной HTML-документ, удалял атрибуты css и создавалвыходной HTML-документ.

Например, если входной HTML-документ содержит этот элемент,

      <p class="abc" style="xyz" > some text </p>

, вывод должен быть

      <p > some text </p>

Ответы [ 2 ]

10 голосов
/ 18 ноября 2011

Используйте jsoup и NodeTraversor для удаления атрибутов класса и стиля из всех элементов

Document doc = Jsoup.parse(input);


NodeTraversor traversor  = new NodeTraversor(new NodeVisitor() {

  @Override
  public void tail(Node node, int depth) {
    if (node instanceof Element) {
        Element e = (Element) node;
        e.removeAttr("class");
        e.removeAttr("style");
    }
  }

  @Override
  public void head(Node node, int depth) {        
  }
});

traversor.traverse(doc.body());
String modifiedHtml = doc.toString();
0 голосов
/ 18 ноября 2011

Вы можете использовать Cyberneko для анализа документа и добавить простой фильтр , который выглядит примерно так:

public class RemoveStyleFilter
    extends DefaultFilter
{
  @Override
  public void startElement(QName element, XMLAttributes attributes, Augmentations augs)
    throws XNIException
  {
    for (String forbidden : new String[] {"class", "style"})
    {
      int index = attributes.getIndex(forbidden);
      if (index >= 0)
      {
        attributes.removeAttributeAt(index);
      }
    }
    super.startElement(element, attributes, augs);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...