【发布时间】:2012-02-26 18:09:43
【问题描述】:
我在 stackoverflow 上阅读了很多关于 html 解析的问题。 我了解到,如果可能,我们应该避免使用正则表达式并使用解析器。 我知道有很多 Html/Xml 解析器,但我不知道如何正确使用它们。
考虑这个通过 jTidy 解析的 html。我有一个由这段代码的 jTidy 创建的 Document 对象:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<!-- Header content -->
</head>
<body>
<div id="container">
<div id="id1"> ... </div>
<div id="id2"> ... </div>
<div id="mainContent">
<div id="section 1">
<div id="subSection">
<!-- Interested part -->
<tbody>
<tr class="success">
<td class="fileName"><span>File One</span></td>
</tr>
<tr class="fail">
<td class="fileName"><span>File Two</span></td>
</tr>
<tr class="success">
<td class="fileName"><span>File Three</span></td>
</tr>
</tbody>
</div>
</div>
</div>
</div>
</body>
现在,我想映射(在 Map :D 中)每个文件名及其类(成功/失败)。 我可以用 DOM 做到这一点,但我应该创建一个 NodeList 并为每个 Element 创建一个新的节点列表(大量内存和无聊)。有诸如 Sax、Xerces 等替代品,但我不知道它们的优缺点。
从上面的“jTyded”html 中提取这些信息的最简单(最快)的方法是什么?
【问题讨论】:
-
我读过 XPath 但问题是我应该:1)为文件名创建一个模式 2)为类创建一个模式 3)关联类/文件名 这不是很简单
-
HtmlUnit怎么样:htmlunit.sourceforge.net
-
@Angelo 我不明白为什么不简单。
标签: java html xml-parsing