6

HTMLファイルの一部の要素を置き換えて、他のすべてのコンテンツを変更しないようにします。

Document doc = Jsoup.parse("<div id=title>Old</div >\n" +
        "<p>1<p>2\n" +
        "<table><tr><td>1</td></tr></table>");
doc.getElementById("title").text("New");
System.out.println(doc.toString());

次の出力が期待されます。

<div id=title>New</span></div >
<p>1<p>2
<table><tr><td>1</td></tr></table>

代わりに、私は持っています:

<html>
 <head></head>
 <body>
  <div id="title">New</div>
  <p>1</p>
  <p>2 </p>
  <table>
   <tbody>
    <tr>
     <td>1</td>
    </tr>
   </tbody>
  </table>
 </body>
</html>

Jsoupは追加しました:

  1. pタグを閉じる
  2. 属性値への二重引用符
  3. tbody
  4. html、頭と体の要素

変更したHTMLをシリアル化して元に戻すことはできますか?Jerichoはそれを行いますが、Jsoupのように洗練されたDOM操作メソッドを提供しません。

4

1 に答える 1

1

属性値を引用してはいけない理由はありますか? ここここを参照してください。

他のポイントについては、これを試してください:

final String html = "<div id=title>Old</div >\n"
            + "<p>1<p>2\n"
            + "<table><tr><td>1</td></tr></table>";

Document doc = Jsoup.parse(html);
doc.select("[id=title]").first().text("New");
doc.select("body, head, html, tbody").unwrap();
doc.outputSettings().prettyPrint(false);

System.out.println(doc);
于 2012-08-27T20:40:06.170 に答える