Htmlparser无法在Java中解析“tbody”

时间:2012-06-21 01:35:46

标签: java html-parser

org.htmlparser我想通过tbody

获取id个节点
Parser htmlParser =  Parser.createParser("<table id='_table' border='0' cellspacing='0' cellpadding='0' class='tableRegion' width='100%' ><thead><tr><td>1</td><td>2</td></tr></thead><tbody id='_table_body' ><tr><td>4</td><td>5</td></tr></tbody></table>","gbk"); 
NodeFilter filter = new HasAttributeFilter("id", "_table_body"); 
NodeFilter f = new AndFilter(new TagNameFilter("tr"), new HasParentFilter(filter)); 
NodeList nodelist1 = htmlParser.parse(filter); //Tag (144[0,144],173[0,173]): tbody id='_table_body' 
NodeList nodelist2 = htmlParser.parse(f); //

为什么nodelist1没有阅读<tr><td>4</td><td>5</td></tr>

1 个答案:

答案 0 :(得分:0)

如果你得到<tbody>节点,你应该期望:

<tbody id='_table_body' ><tr><td>4</td><td>5</td></tr></tbody>

而不是

<tr><td>4</td><td>5</td>

后者是<tbody>元素的子节点...而不是元素本身。基本上,您的代码(使用filter)看起来像是在为您提供正确的东西。