用Java线性解析HTML

用Java线性解析HTML,java,html-parsing,Java,Html Parsing,好的,我想做的是解析如下内容Hello World下划线线性 我在网上搜索过,它总是给我一个DOM解析器,这不是我需要的 我需要一个像这样的树的输出: p / \ \ Hello b u | \ World underl

好的,我想做的是解析如下内容Hello World下划线线性

我在网上搜索过,它总是给我一个DOM解析器,这不是我需要的

我需要一个像这样的树的输出:

                            p
                           / \ \
                      Hello   b  u
                              |   \
                           World  underlined
startElement("p")
characters("Hello")
startElement("b")
characters("World")
endElement("b")
startElement("u")
characters("Underlined")
endElement("u")
endElement("p")
基本上,我需要用Java解析html并尝试解释它(从html标签显示gui)


谢谢。

你需要解释一下线性是什么意思。如果您想解析并获取每个标记,那么DOM解析器就是其中一个选项。但是对于大型HTML文件,DOM解析器的速度很慢。或者,您可以使用SAX解析器并创建自己的解析器。Dom解析器在内部使用SAX解析器

使用SAX解析器可能是您想要的,因为它从头到尾读取输入文档,为找到的每个节点调用代码

SAX是一个XML解析器,大多数HTML并不是完美的XML。因此,要使用SAX,您需要一个能够处理不完美输入的工具。我建议,这是免费的,Apache许可

然后编写一个类来实现。当解析器读取您的输入时,该类将从SAX解析器接收回调。它应该像这样在代码中调用方法:

                            p
                           / \ \
                      Hello   b  u
                              |   \
                           World  underlined
startElement("p")
characters("Hello")
startElement("b")
characters("World")
endElement("b")
startElement("u")
characters("Underlined")
endElement("u")
endElement("p")
(ContentHandler上的实际方法还有几个参数,为了简单起见,我在示例中省略了这些参数)

定义“线性”。解释为什么你认为这是可能的。就此而言,请解释您认为的“解析”是什么意思。你期望什么样的产出?获取DOM对象有什么不足或无用之处?