有没有办法用JSoup格式化一些特殊字符?

时间:2016-07-09 22:44:33

标签: java html string jsoup

使用JSoup library有一种方法可以只清理一些字符。例如,我希望&nbsp;替换为空格,&quot;替换为实际报价,但我不希望任何<br><p>等等删除或替换。我不想像以下那样提取所有的HTML:

Jsoup.parse(html).text()

相反,我想要做的是为它提供一个列表,可能是一个数组,我希望对其进行解析和清理,例如&quot;等等。

1 个答案:

答案 0 :(得分:0)

Jsoup确实提供了cleaning methods。但是,它们只能删除元素或属性。

相反,您可以浏览元素文本并在此处进行替换。

试试这个:

public static void formatDocument(Document doc, String[] encodings, String[] replacements) {
   // FIXME: Check that encodings and replacements have same size...

   Elements allElements = doc.select("*");
   int encodingsCount = encodings.length;

     for(Element anElement : allElements) {
         String textElement = anElement.ownText();

         for(int i=0; i<encodingsCount; i++) {
             textElement = textElement.replace(encodings[i], replacements[i]);
         }

         anElement.text(textElemement);
     }
}

另见:

How do I build a NodeTraversor/NodeVisitor with JSoup?