0

Java で Xpath を使用して HTML ページを解析しようとしています。これが私のコードです:

        /** Cleaning the html file */
        /** the 'doc' variable is a String containing the whole html file */
        TagNode tagNode = new HtmlCleaner().clean(doc);
        Document doc2 = new DomSerializer( new CleanerProperties() ).createDOM(tagNode);




        XPath xpath = XPathFactory.newInstance().newXPath();

        /** xpath request */
        Object dates_experience = xpath.evaluate("/html/body/div[3]/div/div/div[2]/div/div/div[2]/div[4]/div/div[3]/h4/span[2]", doc2, XPathConstants.NODESET);

        NodeList nodes = (NodeList) dates_experience;
        String s;
        for (int i = 0; i < nodes.getLength(); i++) {
            s = org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4(nodes.item(i).getTextContent());
            System.out.println(s); 
        }

出力に次のように表示されるため、stringEscapeUtils または HtmlCleaner に問題があると思います。

�

これらの文字の代わりに:

é, è, ', à, û, ...etc

たとえば、次の入力があります。

décembre 2010 - décembre 2010)
février 2010 - juin 2010)
juillet 2009 - septembre 2009)
juin 2009 - juin 2009)
juillet 2008 - août 2008)

私のプログラムはこの出力を生成します:

d�cembre 2010 - d�cembre 2010)
f�vrier 2010 - juin 2010)
juillet 2009 - septembre 2009)
juin 2009 - juin 2009)
juillet 2008 - ao�t 2008)

この問題を解決するのを手伝ってくれませんか?

ありがとう。

4

1 に答える 1

1

それらをエスケープするのではなく、*un*エスケープする必要があると思います:StringEscapeUtils.unescapeHtml4(String)

于 2013-06-07T12:55:08.987 に答える