Jsoup:用文本更改标签然后保存在Java

时间:2016-05-01 16:22:03

标签: java html jsoup

我有一个html文件:

<html ><head></head> <body> <dtag> <div>TEST</div> </dtag> </body></html>

我想替换整个<dtag>,在其中包含内容,通过文字包含&#34; adc&#34;  并保存。我正在使用这个功能:

private void editHTML() {
    StringBuilder sb = new StringBuilder();
    BufferedReader br = new BufferedReader(new FileReader(strIndexPath));
    String strLine;
    while ((strLine = br.readLine()) != null) {
        sb.append(strLine);
    }
    Document doc = Jsoup.parse(sb.toString());
    // Document doc=Jsoup.parse(strIndexPath,"UTF-8");
    String tagName = "dtag";
    Elements dTags = doc.select(tagName);
    if (dTags != null)
        messager.show(dTags.toString());
    String strPhp = "<?php $this->DoIt();?>";
    for (Element dTag : dTags)
        dTag.text(strPhp);
    messager.show(dTags.toString());
}

我知道我做到了。但我不知道如何将其保存到我的html文件中。

1 个答案:

答案 0 :(得分:1)

如果您使用的是早于7.0.0的PHP版本,则可以使用此php开始标记<script language=php>代替<?php

这个不同的php开始标记会让Jsoup开心:

示例代码

String s = "<html><head></head> <body> <dtag> <div>TEST</div> </dtag> </body></html>";
Document doc = Jsoup.parse(s, "", Parser.xmlParser());

System.out.println("BEFORE:\n" + doc.html());

Elements dTags = doc.select("dtag");
for (Element dTag : dTags) {
    dTag.after("<script language=php>$this->DoIt();</script>");
    dTag.remove();
}

System.out.println("\n\nAFTER:\n" + doc.html());

输出

BEFORE:
<html>
 <head></head> 
 <body> 
  <dtag> 
   <div>
    TEST
   </div> 
  </dtag> 
 </body>
</html>


AFTER:
<html>
 <head></head> 
 <body> 
  <script language="php">$this->DoIt();</script> 
 </body>
</html>

参考文献: