gpt4 book ai didi

java - 在 Java 中从 HTML 中提取信息(解析)的最简单方法

转载 作者:行者123 更新时间:2023-11-30 04:53:01 26 4
gpt4 key购买 nike

我在 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 并为每个元素创建一个新的节点列表(大量内存且无聊)。还有像 Sax、Xerces 等替代品,但我不知道它们的优点/缺点。

从上面的“jTyded”html 中提取这些信息的最简单(也是最快)的方法是什么?

最佳答案

首先 - 你忘记添加<table>标签。

您可以使用 Jsoup 轻松解析代码

这是一个例子:

//  String html =" ...here goes your html code... ";
// Document doc = Jsoup.parse(html);
// Or from file:
File input = new File("com.htm");
Document doc = Jsoup.parse(input, "UTF-8");
Elements trs = doc.select("tr"); //select all "tr" elements from document
for(Element tr:trs){
//Getting the class string form tr element
System.out.println("The file class is: " + tr.attr("class")
//getting the filename string that holds inside td element
+ " The filamee is: " + tr.select("td").text());
}
}

关于java - 在 Java 中从 HTML 中提取信息(解析)的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com