Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java修改HTML_Java_Html_Parsing_Dom_Jsoup - Fatal编程技术网

使用java修改HTML

使用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选择器的其他文

我正在尝试读取一个HTML文件并添加一些文本的链接:

例如: 我想添加“活动0”文本的链接:

101

活动0 未知

要添加的链接:

<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>