0

我使用 HtmlCleaner 2.6.1 和 Xpath 来解析 Android 应用程序中的 html 页面。这里的html页面:

  1. http://www.kino-govno.com/comments/42571-postery-kapitan-fillips-i-poslednij-rubezh

  2. http://www.kino-govno.com/comments/42592-fantasticheskie-idei-i-mesta-ih-obitanija

    第一个链接返回文件,就可以了。第二个链接在这里:

    document = domSerializer.createDOM(tagNode);
    

    什么都不返回。

如果你创建一个没有 android 的简单 java 项目。这一切都很好。

这是代码:

        String queries = "//div[starts-with(@class, 'news_text op')]/p";            
        URL url = new URL(link2);
        TagNode tagNode = new HtmlCleaner().clean(url);
        CleanerProperties cleanerProperties = new CleanerProperties();
        DomSerializer domSerializer = new DomSerializer(cleanerProperties);
        document = domSerializer.createDOM(tagNode);
        xPath = XPathFactory.newInstance().newXPath();
        pageNode = (NodeList)xPath.evaluate(queries,document, XPathConstants.NODESET);
        String val = pageNode.item(0).getFirstChild().getNodeValue();
4

1 回答 1

0

这是因为 HtmlCleaner 将第二个 HTML 页面的段落包装到另一个 HTML 页面中<div/>,所以它不再是直接子级。使用descendent-or-self-axis//而不是child-axis /

//div[starts-with(@class, 'news_text op')]//p
于 2013-09-13T21:59:06.030 回答