【问题标题】:Parse html document with NekoHTML使用 NekoHTML 解析 html 文档
【发布时间】:2011-10-11 16:25:37
【问题描述】:

我正在使用带有 xerces 2.11.0 版本的 NekoHTML 框架来解析 HTML 文档。 但我对这个简单的代码有疑问:

DOMParser parser = new DOMParser();
System.out.println(parser.getClass().toString());
InputSource url = new InputSource("http://www.cbgarden.org");
try{
    parser.parse(url);
    Document document = parser.getDocument();
    System.out.println(document.hasChildNodes());
    System.out.println(document.getBaseURI());
    System.out.println(document.getNodeName());
    System.out.println(document.getNodeValue());
}catch(Exception e){
    e.printStackTrace();
}

现在我把多次打印的结果放在这里:

  1. 类 org.cyberneko.html.parsers.DOMParser
  2. 是的
  3. http://www.cbgarden.org
  4. 文档

所以我的问题是:可能出了什么问题? 没有抛出异常,我遵循 NekoHTML 的使用规则中定义的规则。我的构建路径库具有以下优先级:

  1. nekohtml.jar
  2. nekohtmlSamples.jar
  3. xercesImpl.jar
  4. xercesSamples.jar
  5. xml-apis.jar

【问题讨论】:

  • 关于这个主题我还有一个问题:为什么 parser.getDocument() 方法返回一个包含两个节点的文档,其中一个节点为 NULL?

标签: java html parsing cyberneko


【解决方案1】:

我猜你的问题是关于null?
document 节点没有值。它只有子节点(如<html> 女巫包含<head><body>)。

但是如果你想将整个页面源作为一个字符串,你可以简单地使用URL它的方法openStream()下载它。

【讨论】:

  • 是的,我看到了这一点。如果我创建 document.getChildNodes(),结果将是两个节点,如果我使用 getLocalName(),其中一个返回“HTML”,另一个返回 NULL。我如何查看所有文档,如果我使用 document.toString 它返回 [document: null]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
相关资源
最近更新 更多