如何使用Java';谁有自己的解析器?
我不想下载任何其他库,我说的是这个:如何使用Java';谁有自己的解析器?,java,html-parsing,Java,Html Parsing,我不想下载任何其他库,我说的是这个:javax.swing.text.html.HTMLEditorKit.Parser 如何使用此解析器提取页面中的重复信息 例如,我在页面中重复了以下代码: <tr> <td class="info1">get this info</td> <td class="info2">get this info</td> <td class="info3"&g
javax.swing.text.html.HTMLEditorKit.Parser
如何使用此解析器提取页面中的重复信息
例如,我在页面中重复了以下代码:
<tr>
<td class="info1">get this info</td>
<td class="info2">get this info</td>
<td class="info3">get this info</td>
</tr>
获取此信息
获取此信息
获取此信息
能给我一些示例代码吗
提前感谢。这是一个流解析器,因此当它解析时,它会告诉您它的作用。您应该使用一些类进行扩展(我称之为
解析器
),然后重写您关心的方法
我相信它只适用于“swing中的HTMLDTD”(请参阅)。如果您正在做更复杂的事情,建议您改用外部JavaHTML解析库,比如我之前链接到的一个
下面是基本代码():
Matthew Flaschen回答了你的直接问题。我只想补充几点建议:
好吧,你已经卖给我了。谢谢
import javax.swing.text.html.parser.*;
import javax.swing.text.html.*;
import javax.swing.text.*;
import java.io.*;
class Parser extends HTMLEditorKit.ParserCallback
{
private boolean inTD = false;
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
{
if(t.equals(HTML.Tag.TD))
{
inTD = true;
}
}
public void handleEndTag(HTML.Tag t, int pos)
{
if(t.equals(HTML.Tag.TD))
{
inTD = false;
}
}
public void handleText(char[] data, int pos)
{
if(inTD)
{
doSomethingWith(data);
}
}
public void doSomethingWith(char[] data)
{
System.out.println(data);
}
}
class HtmlTester
{
public static void main (String[] args) throws java.lang.Exception
{
ParserDelegator pd = new ParserDelegator();
pd.parse(new BufferedReader(new InputStreamReader(System.in)), new Parser(), false);
}
}