使用java修改HTML
我正在尝试读取一个HTML文件并添加一些文本的链接: 例如: 我想添加“活动0”文本的链接: 101 活动0 未知 要添加的链接:使用java修改HTML,java,html,parsing,dom,jsoup,Java,Html,Parsing,Dom,Jsoup,我正在尝试读取一个HTML文件并添加一些文本的链接: 例如: 我想添加“活动0”文本的链接: 101 活动0 未知 要添加的链接: <a href="Second.html"> ”; 这是否正确?它不工作:( 简言之:有类似--> 如果查找活动0 然后替换为 使用JSoup或JAVA代码内部的任何技术???您的代码似乎非常正确。要查找带有“活动0”、“活动1”等的span元素,可以使用JSoup选择器“span:containsOwn(活动0)”。有关JSoup选择器的其他文
<a href="Second.html">
”;
这是否正确?它不工作:(
简言之:有类似-->
如果查找活动0
然后替换为
使用JSoup或JAVA代码内部的任何技术???您的代码似乎非常正确。要查找带有“活动0”、“活动1”等的span元素,可以使用JSoup选择器“span:containsOwn(活动0)”。有关JSoup选择器的其他文档,请参阅 找到元素并用链接包装它们后,调用doc.html()应返回修改后的html代码。以下是一个工作示例: input.html:
<table>
<tr>
<td><p><span>101</span></p></td>
<td><p><span>Campaign0</span></p></td>
<td><p><span>unknown</span></p></td>
</tr>
<tr>
<td><p><span>101</span></p></td>
<td><p><span>Campaign1</span></p></td>
<td><p><span>unknown</span></p></td>
</tr>
</table>
101
竞选活动
不为人知
101
活动1
不为人知
代码:
File input = new File("input.html");
Document doc = Jsoup.parse(input, "UTF-8", "");
Element span = doc.select("span:containsOwn(Campaign0)").first();
span.wrap("<a href=\"First.html\"></a>");
span = doc.select("span:containsOwn(Campaign1)").first();
span.wrap("<a href=\"Second.html\"></a>");
String html = doc.html();
BufferedWriter htmlWriter =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.html"), "UTF-8"));
htmlWriter.write(html);
htmlWriter.close();
File input=新文件(“input.html”);
documentdoc=Jsoup.parse(输入“UTF-8”,”);
元素span=doc.select(“span:containsOwn(活动0)”).first();
span.环绕(“”);
span=doc.select(“span:containsOwn(活动1)”).first();
span.环绕(“”);
字符串html=doc.html();
缓冲写入程序htmlWriter=
新的BufferedWriter(新的OutputStreamWriter(新的FileOutputStream(“output.html”),“UTF-8”);
htmlWriter.write(html);
htmlWriter.close();
输出:
<html>
<head></head>
<body>
<table>
<tbody>
<tr>
<td><p><span>101</span></p></td>
<td><p><a href="First.html"><span>Campaign0</span></a></p></td>
<td><p><span>unknown</span></p></td>
</tr>
<tr>
<td><p><span>101</span></p></td>
<td><p><a href="Second.html"><span>Campaign1</span></a></p></td>
<td><p><span>unknown</span></p></td>
</tr>
</tbody>
</table>
</body>
</html>
101
未知
101
未知
text=text.replaceAll(“活动0”,“活动”);是否尝试过此操作?请检查:[[1]:span.text().replaceAll(“活动0”,“活动”);span.text().replaceAll(“活动0”,“活动”);不起作用:(未显示任何更改。您签出了吗?@Ascalonian您可以看到我正在使用Jsoup:Phey,谢谢您的回复,但我认为您将只使用第一个遇到的。在我的情况下,这不是第一个:(您希望添加链接到哪个范围?)第一个内容为“活动0”的链接,或其他一些规则?实际上有许多跨度,如“活动0”、“活动1”、“活动2”、“活动3”…等。不同的将有不同的html文件超链接。因此问题是选择要修改的跨距元素。能否扩展输入示例以包含周围的元素和另一个需要修改的跨距?选择规则是否类似“表中每个tr元素的第二个td元素中的span元素”?使用诸如doc.select(“span:containsOwn(campaint0)”)之类的选择器可以很容易地找到campaint0。您说过span的内容可以不同,比如“campaint1”-您知道span可以包含的所有可能值吗?如果您有“campaint0”、“campaint1”的列表“,…,您可以遍历列表,并使用span:containsOwn(活动0)等选择每个span。
<table>
<tr>
<td><p><span>101</span></p></td>
<td><p><span>Campaign0</span></p></td>
<td><p><span>unknown</span></p></td>
</tr>
<tr>
<td><p><span>101</span></p></td>
<td><p><span>Campaign1</span></p></td>
<td><p><span>unknown</span></p></td>
</tr>
</table>
File input = new File("input.html");
Document doc = Jsoup.parse(input, "UTF-8", "");
Element span = doc.select("span:containsOwn(Campaign0)").first();
span.wrap("<a href=\"First.html\"></a>");
span = doc.select("span:containsOwn(Campaign1)").first();
span.wrap("<a href=\"Second.html\"></a>");
String html = doc.html();
BufferedWriter htmlWriter =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.html"), "UTF-8"));
htmlWriter.write(html);
htmlWriter.close();
<html>
<head></head>
<body>
<table>
<tbody>
<tr>
<td><p><span>101</span></p></td>
<td><p><a href="First.html"><span>Campaign0</span></a></p></td>
<td><p><span>unknown</span></p></td>
</tr>
<tr>
<td><p><span>101</span></p></td>
<td><p><a href="Second.html"><span>Campaign1</span></a></p></td>
<td><p><span>unknown</span></p></td>
</tr>
</tbody>
</table>
</body>
</html>