簡體   English   中英

如何使用jsoup將當前元素嵌入到新元素中並更新到文檔中

[英]how to embedded current element into a new element and updated into document with jsoup

我正在使用jsoup處理html,我想將<img>元素嵌入到<p>
從:

<div>
   <img src="image.jpg"/>
</div>

至:

<div>
   <p><img src="image.jpg"/><br></p>
</div>

我嘗試在代碼下使用,但無法更新到jsoup文檔中

@Test
public void testaddp(){
    String acontent = "<div><img src="/base/img/avs.jpg"/></div>";
    Document document = Jsoup.parseBodyFragment(acontent);
    Element element = document.body();
    Element imgelement = element.select("img").first();
    Element newElement = new Element("p");
    newElement = newElement.insertChildren(0,imgelement,new Element("br"));
    System.out.println(newElement.outerHtml());//seems i got the correct html in newElement
    //imgelement.replaceWith(newElement);//failed to update into element
    imgelement.wrap(newElement.outerHtml());//also failed to update into element
    //how to updated into document?
    System.out.println();
}

嘗試使用此代碼。 注釋中的解釋。

    String acontent = "<head>Some head</head><body><div>A div</div><div><img src=\"/base/img/avs.jpg\"/></div><div>Another div</div></body>";
    Document document = Jsoup.parse(acontent);
    System.out.println(document);
    //select element you want to change
    Element img = document.select("img").first();
    //wrap it with p
    Element p = new Element("p");
    p.html(img.outerHtml());
    //append br
    Element br = new Element("br");
    p.appendChild(br);
    //replace original with new
    img.replaceWith(p);

    System.out.println(document);

我找到了一個答案:

@Test
public void testaddp(){
    String acontent = "<div><img src="/base/img/avs.jpg"/></div>";
    Document document = Jsoup.parseBodyFragment(acontent);
    Element element = document.body();
    Element imgelement = element.select("img").first();

    //find parent element
    Element parentElement = imgelement.parent();
    //add br after img tag
    parentElement.insertChildren(parentElement.childNodeSize(),new Element("br"));

    //add p tag out of img
    imgelement.wrap("<p>")

    System.out.println();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM