当前位置: 首页 > 面试题库 >

使用Java修改HTML

柴阳云
2023-03-14
问题内容

我正在尝试读取HTML文件,并添加指向某些文本的链接:

例如:我想添加链接到“ Campaign0”文本。:

<td><p style="overflow: hidden; text-indent: 0px; "><span style="font-family: SansSerif;">101</span></p></td> 
<td><p style="overflow: hidden; text-indent: 0px; "><span style="font-family: SansSerif;">Campaign0</span>
<td><p style="overflow: hidden; text-indent: 0px; "><span style="font-family: SansSerif;">unknown</span></p></td>

要添加的链接:

<a href="Second.html">

我需要一个Java程序来修改html,以在“ Campaign0 ” 上添加超链接。

我如何用Jsoup做到这一点?

我用JSoup尝试了这个:

        File input = new File("D://First.html");
        Document doc = Jsoup.parse(input, "UTF-8", "");
        Element span = doc.select("span").first(); <-- this is only for first span tag :(
        span.wrap("<a href="Second.html"></a>");

这样对吗 ??它不起作用:(

简而言之 :是否有类似->

 if find <span>Campaign0</span> 
 then replace by <span><a href="">Campaign0</a></span>

在Java代码中使用JSoup或任何技术?


问题答案:

您的代码似乎非常正确。要使用“ Campaign0”,“ Campaign1”等查找跨度元素,可以使用JSoup选择器“
span:containsOwn(Campaign0)”。见JSoup选择其他文档在jsoup.org。

找到元素并用链接包装它们之后,调用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>

码:

    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>


 类似资料:
  • 我试图阅读一个超文本标记语言文件,并添加一些文本的链接: 例如:我想添加“活动0”文本的链接: 要添加的链接: 我需要一个JAVA程序,修改html添加超链接超过“0”。 我如何使用Jsoup实现这一点? 我用JSoup试过这个: 这是正确的吗??它不起作用:( 简言之:有类似的吗-- 在JAVA代码中使用JSoup或任何技术??

  • 问题内容: 我想使用Java程序删除文件的某些内容,如下所示。这是在相同文件中替换的写方法,还是应将其复制到另一个文件。 但是它删除了文件的所有内容。 问题答案: 我将从关闭阅读器和刷新书写器开始:

  • 问题内容: 我有这个元素: 我要做的就是在我的网页上进行更改。 可能吗? 问题答案: 试试这个:

  • 每一个应用系统都离不开用户模块。用户模块除了提供登录之外,还允许用户查看自己的信息和进行修改。本实例将创建一个用户类,然后再创建一个测试类调用用户类,实现修改密码的功能。 本实例的用户类非常简单,仅包含用户名和密码两个属性。 创建 MemberTest 类实现修改密码的功能,即当用户输入的密码与原来密码相同时方可进行修改密码操作,否则提示用户输入的密码不正确。具体的实现代码如下: 如上述代码,在

  • 我有一个映射,我正在遍历它,并使用循环修改映射的值。我想知道是否有一种方法可以使用Java8流来实现。 这是我的代码: 基本上,我想流化地图值,设置值,并将其作为新地图。

  • 我正在尝试重构旧的SimpleFormController。我想用实际的成功视图和表单视图字符串替换getSuccessView()和gerFormView()调用。 我尝试的另一种方法是直接操纵身体作为一个整体。 这和第一个还有同样的汽车进口问题。除此之外,它添加了冗余的花括号,例如 会变成 因为它是简单的替换,最简单的方法是如下所示 由于我可以在修改修饰符、注释、方法名、注释等方面避免使用sp