Android:解析HTML代码块

时间:2011-02-16 18:20:44

标签: java android html regex parsing

我有以下HTML代码,我需要解析它以检索玩家名称和他已经得分的运行。 在这种情况下,它是'罗斯泰勒'和9。 解析此信息的最佳方法是什么?不想使用HTML解析器。 REGEX是最好的方式(我知道人们对此已经死了!但我只想要这些2位信息,因此不想使用解析器)? 我一直绞尽脑汁想知道如何弄清楚html文件中玩家名称的位置以及随后得分的行。 下面的HTML注释部分是硬编码部分。我可以到达这个地方。然后检索标签之间的名称。这是一个很好的方法吗? 另外如何在下一行中检索运行部分?


<!-- <a href="javascript:void(0);" onClick="return showHwkTooltip(this, 'lvpyrbat1');" class="livePlayerCurrent">*Luke Woodcock</a>-->

<a href="/icc_cricket_worldcup2011/content/current/player/38920.html" target="_blank" class="livePlayerCurrent" title="view the player profile for Ross Taylor">
*Ross Taylor
</a>    <span style="margin-left:5px;" title="left-hand bat">(lhb)</span >

   </td >
   <td><b>9</b></td>
   <td>9</td>
   <td>1</td>
   <td>0</td>
   <td>100.00</td>
   <td></td>
   <td colspan="3" align="left"><span class="batStyl">striker</style></td>
   <td></td>
   <td colspan="8"></td>
  </tr>

如果您需要更多信息,请与我们联系。

此致 萨姆

3 个答案:

答案 0 :(得分:9)

  

解析此信息的最佳方法是什么?

Use an HTML parser.

  

不想使用HTML解析器。

I disagree.

  

REGEX是最好的方式

No.

答案 1 :(得分:1)

请考虑使用适当的工具来完成工作,例如html/xml parser而不是regex

如果真的想要使用正则表达式进行操作,您可以尝试以下方法:

提取分数

  (?<=\\<b\\>)\\d+(?=\\</b\\>)

提取玩家名称

  (?<=\\>)[^\\<]+(?=\\</a\\>)

第二个正则表达式假设您通过删除注释标记之间的anchortag来清理xml。

 <!-- ... -->

它的作用是在任何anchortag中提取值。这是使用正则表达式时的一个基本限制,它不是上下文感知的。

答案 2 :(得分:0)

对于它的价值,您还可以查看Jsoup。我在我的项目中使用它,它很好地处理格式错误的HTML。我相信这可能是我使用它的唯一原因;)

此致 EZFrag