1

私はこのスパンを持っています:<span style="font-weight:bold;">bold. </span>そしてスパンと呼ばれるそれ(要素)への参照。

span 要素内のすべてをいくつかの新しいタグ、例のタグでラップしたい<p>:<span style="font-weight:bold;"><p>bold. </p></span>

呼び出すことができることはわかっていますspan.wrap("<p></p>")が、これはスパンの内容ではなくスパンをラップします。新しいタグを実行しようとするspan.append("<p>")と、コンテンツの先頭に作成され、appendElement でも同じことが起こります。

要素全体ではなく、スパン/要素のコンテンツをラップする最良の方法は何ですか?

更新:要素にもラップがありますが、span.getAllElements() を呼び出してからラップすると、同じ結果が得られます。この例では、span.wrap() および span.children() は 0 です。

更新 2: 回避策として、span.html() でコンテンツを取得し、それを一時的な文字列として保存し、そのコンテンツの周りに必要なタグを追加してから、span.html(newContent を介してスパン コンテンツをそれに設定することができました); より良い方法がない場合は、自分の質問に答えるだけです。

4

1 に答える 1

3

テキストノードの使用をラップするために

span.childNode(0).wrap("<p>");

編集:さまざまなユースケースの例:

String html = "<span style=\"font-weight:bold;\">bold.</span><span></span><span><a>text</a></span>";
Document parsedDoc = Jsoup.parse(html);
Elements selects = parsedDoc.select("span");

for (Element span : selects) {
    List<Node> childNodes = span.childNodes();
    if (childNodes.size() > 0 && span.childNode(0).childNodes().size() == 0) {
        span.childNode(0).wrap("<p>");
    }
}
于 2013-01-05T00:50:05.167 に答える