Java 线性解析 HTML
好吧,我想做的是解析这样的东西
你好世界 <你>下划线
线性。我在网上搜索过,它总是给我一个 DOM 解析器,但这不是我需要的。
我需要一个像这样的树的输出:
p
/ \ \
Hello b u
| \
World underlined
基本上,我需要用Java解析html并尝试解释它(从html标签显示gui)。
谢谢。
Ok what I'm trying to do is parse something like this <p> Hello <b> World </b> <u> Underlined </u> </p> linearly.
I've searched through the net, and it always gives me a DOM parser, which is not what I need.
I need an output which would be a tree like this:
p
/ \ \
Hello b u
| \
World underlined
Basically, I need a to parse html in Java and try to interpret it (display a gui from the html tags).
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要解释一下线性是什么意思。如果你想解析并获取每个标签,那么 DOM 解析器是选项之一。但对于大型 HTML 文件,DOM 解析器速度很慢。或者,您可以使用 SAX 解析器并创建您自己的解析器。 Dom解析器内部使用SAX解析器
You Need to explain what do you mean by Linearly. If you want to parse and get each tag then DOM parser is one of the Option. But for large HTML files the DOM parser is slow. Alternatively you can use SAX parser and create your own parser. Dom parser internally uses SAX parser
使用 SAX 解析器可能就是您想要的,因为它从头到尾读取输入文档,为它找到的每个节点调用您的代码。
SAX 是一个 XML 解析器,大多数 HTML 都不是完美的 XML。因此,要使用 SAX,您需要一个可以处理不完美输入的工具。我建议使用 TagSoup,它是免费的且获得 Apache 许可。
然后编写一个实现 org.xml 的类。 sax.ContentHandler。当解析器读取您的输入时,该类将从 SAX 解析器接收回调。它应该像这样调用代码中的方法:
(ContentHandler 上的实际方法还有更多参数,为了简单起见,我在示例中省略了这些参数)
Using a SAX parser is probably what you want, because it reads through an input document from start to finish, calling your code for each node it finds.
SAX is an XML parser, and most HTML isn't perfect XML. So to use SAX you need a tool that can handle imperfect input. I suggest TagSoup, which is free and Apache-licensed.
Then you write a class which implements org.xml.sax.ContentHandler. That class will receives callbacks from the SAX parser as the parser reads through your input. It should call methods in your code like this:
(The actual methods on ContentHandler have a few more parameters, which I left out of the example for simplicity)