0

我正在使用 Jsoup API 解析一些网页。但是我得到了 1 个字符集中的页面,并且必须将它们解析为其他

问题:如何将第 1 行解析为第 2 行?

String str1 = "Um grupo ligado à al-Qaeda assumiu o "
    + "ataque e ameaçou fazer outros.";

String str2 = "Um grupo ligado à al-Qaeda assumiu o "
    + "ataque e ameaçou fazer outros.";

//(The text above translate to some news about WTC)
4

3 回答 3

0

我还没有真正测试过Jsoup,但是当我需要使用该类将 HTML 转换为 XML 时, JTidy对我非常有帮助org.w3c.tidy.Tidy。这会自动转换实体。

static String str1 = "Um grupo ligado à al-Qaeda assumiu o "
        + "ataque e ameaçou fazer outros.";

public static void main(String[] args) throws Exception {
    System.out.println(cleanData(str1));
}

private static String cleanData(String data) throws UnsupportedEncodingException {
    Tidy tidy = new Tidy();
    tidy.setNumEntities(true); // to num entities
    tidy.setPrintBodyOnly(true); // only print the content
    tidy.setWraplen(Integer.MAX_VALUE); // wrap
    ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    tidy.parseDOM(inputStream, outputStream);
    return outputStream.toString("UTF-8");
}

Document如果你愿意,你也可以得到一个实例。

public org.w3c.dom.Document parseDOM(Reader in, Writer out)
public org.w3c.dom.Document parseDOM(InputStream in, OutputStream out)
于 2012-05-22T17:15:36.657 回答
0

我不是该主题的专家,但我相信您正在寻找的答案在http://www.davidcraddock.net/tag/beautifulsoup/

于 2012-05-22T16:56:02.193 回答
0

有点像 JTidy 解决方案:命名实体,like&agrave;是在维护 HTML 的 w3c.org 的 .dtd 文件中定义<!DOCTYPE ...的。将它们复制到本地并解析它们(简单)。然后,您可以立即用 unicode 字符串替换实体,或者制作数字实体。

于 2012-05-22T17:23:20.650 回答