gpt4 book ai didi

java - NekoHTML SAX 片段解析

转载 作者:行者123 更新时间:2023-12-01 05:40:32 25 4
gpt4 key购买 nike

我正在尝试使用 NekoHTML 解析一个简单的 HTML 片段:

<h1>This is a basic test</h1>

为此,我设置了 specific Neko feature不要有任何 HTML、HEAD 或 BODY 标记调用 startElement(..) 回调。

不幸的是,它对我不起作用。我当然错过了一些东西,但不知道它会是什么。

这是一个非常简单的代码来重现我的问题:

 public static class MyContentHandler implements ContentHandler {

public void characters(char[] ch, int start, int length) throws SAXException {
String text = String.valueOf(ch, start, length);
System.out.println(text);
}

public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributes) throws SAXException {
System.out.println(rawName);
}

public void endElement(String nameSpaceURI, String localName, String rawName) throws SAXException {
System.out.println("end " + localName);
}
}

以及启动测试的 main() :

  public static void main(String[] args) throws SAXException, IOException {
SAXParser saxReader = new SAXParser();
// set the feature like explained in documentation : http://nekohtml.sourceforge.net/faq.html#fragments
saxReader.setFeature("http://cyberneko.org/html/features/balance-tags/document-fragment", true);
saxReader.setContentHandler(new MyContentHandler());
saxReader.parse(new InputSource(new StringInputStream("<h1>This is a basic test</h1>")));
}

对应的输出:

HTML
HEAD
end HEAD
BODY
H1
This is a basic test
end H1
end BODY
end HTML

而我期待的是

H1
This is a basic test
end H1

有什么想法吗?

最佳答案

我终于明白了!

实际上,我正在 GWT 应用程序中解析 HTML 字符串,我在其中添加了 gwt-dev.jar 依赖项。这个jar包封装了很多外部库,比如xercesImpl。但嵌入的 xerces 类的版本与 NeokHTML 所需的版本不匹配。

作为一个(奇怪的)结果,NeokHTML SAX 解析器在使用 gwt-dev 嵌入式 xerces 版本时似乎没有使用任何自定义功能。

因此,我必须重新编写一些代码以删除 gwt-dev 依赖项,顺便说一句,不建议将其添加到任何标准 GWT 项目中。

关于java - NekoHTML SAX 片段解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com