Надлежащее использование JTidy для очищения HTML

Я пытаюсь использовать JTidy (jtidy-r938.jar) для очистки входа строка HTML, но у меня, кажется, есть проблемы при разбирании в настройках по умолчанию. Часто строки такой как "привет мир" заканчиваются как "helloworld" после уборки. Я хотел показать то, что я делаю здесь, и любые указатели действительно ценились бы:

Примите это rawHtml Строка, содержащая вход (реальный мир) HTML. Это - то, что я делаю:

        Tidy tidy = new Tidy();
        tidy.setPrintBodyOnly(true);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);

        tidy.parse(new StringReader(rawHtml), ps);
        return baos.toString("UTF8");   

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

Например, рассмотрите следующий вход:

<p class="MsoNormal" style="text-autospace:none;"><font color="black"><span style="color:black;">???</span></font><b><font color="#7f0055"><span style="color:#7f0055;font-weight:bold;">private</span></font></b><font color="black"><span style="color:black;"> String parseDescription</span></font><font>

Вывод:

<p class="MsoNormal" style="text-autospace:none;"><font color= "black"><span style="color:black;">&nbsp;&nbsp;&nbsp;</span></font> <b><font color="#7F0055"><span style= "color:#7f0055;font-weight:bold;">private</span></font></b><font color="black"><span style="color:black;">String parseDescription</span></font></p>

Так,

"общедоступная Строка parseDescription" становится "publicString parseDescription"

Заранее спасибо!

5
задан ragebiswas 12 April 2010 в 08:13
поделиться

3 ответа

Что ж, похоже, это ошибка в Jtidy. Точный файл, вызывающий проблемы, можно найти здесь:

http://sourceforge.net/tracker/?func=detail&aid=2985849&group_id=13153&atid=113153

Спасибо за помощь, ребята!

2
ответ дан 14 December 2019 в 13:32
поделиться

Вот как мы вызываем JTidy из Ant. Вы можете вывести из него вызов API:

<tidy destdir="${build.dir.result}">
  <fileset dir="${src}" includes="**/*.htm"/>
  <parameter name="tidy-mark" value="false"/>
  <parameter name="output-xml" value="no"/>
  <parameter name="numeric-entities" value="yes"/>
  <parameter name="indent-spaces" value="2"/>
  <parameter name="indent-attributes" value="no"/>
  <parameter name="markup" value="yes"/>
  <parameter name="wrap" value="2000"/>
  <parameter name="uppercase-tags" value="no"/>
  <parameter name="uppercase-attributes" value="no"/>
  <parameter name="quiet" value="no"/>
  <parameter name="clean" value="yes"/>
  <parameter name="show-warnings" value="yes"/>
  <parameter name="break-before-br" value="yes"/>
  <parameter name="hide-comments" value="yes"/>
  <parameter name="char-encoding" value="latin1"/>
  <parameter name="output-html" value="yes"/>
</tidy>
1
ответ дан 14 December 2019 в 13:32
поделиться

Посмотрите, как настроен JTidy:

StringWriter writer = new StringWriter();
tidy.getConfiguration().printConfigOptions(writer, true);
System.out.println(writer.toString());

Возможно, тогда станет ясно, в чем причина проблемы.

Что странно? Маленький пример, фактического вывода и ожидаемого... может быть?

3
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: