RizN81
RizN81

Reputation: 1039

How to parse a nested Div into a table structure using Jsoup

I have div structure like this

<div class="DivClass-1"> Div One 
    <div class="DivClass-A"> Div A  </div>
 </div>
    <div class="DivClass-2"> Div Two
    <div class="DivClass-A"> Div B   </div>
 </div>

    <div class="DivClass-3"> Div Three
    <div class="DivClass-A"> Div C   </div>
 </div>
    <div class="DivClass-4"> Div Four 
    <div class="DivClass-A"> Div D   </div>
 </div>

and i want to parse it and convert this div structure into a table structure can any body give an idea how to achieve this.

Upvotes: 0

Views: 503

Answers (2)

Mizuki
Mizuki

Reputation: 2233

I am not clear which <div> tag you want to convert to <tr> and <td> tag.

But, I assume DivClass-1, DivClass-2, DivClass-3, DivClass-4 are convert to <tr> tag. Others are convert to <td> tag.
I hope following code will give you little idea.

StringBuffer myHTML = new StringBuffer();
myHTML.append("<div class=\"DivClass-1\"> Div One <div class=\"DivClass-A\"> Div A  </div> </div>" +
                "<div class=\"DivClass-2\"> Div Two<div class=\"DivClass-A\"> Div B   </div></div>" +
                "<div class=\"DivClass-3\"> Div Three<div class=\"DivClass-A\"> Div C   </div></div>" +
                "<div class=\"DivClass-4\"> Div Four <div class=\"DivClass-A\"> Div D   </div></div>");

Document myDoc = Jsoup.parse(myHTML.toString());
//get DivClass-1, DivClass-2, etc. 
Elements DivClass = myDoc.select("div").not("div.DivClass-A");
Elements DivClass_A = myDoc.select("div.DivClass-A");

//rename the tag <div class="DivClass-1"> to <tr class="DivClass-1">
DivClass.tagName("tr");
//renamed the tag <div class="DivClass-A"> to <td class="DivClass-A">
DivClass_A.tagName("td");
System.out.println(myDoc.toString());

Here's the printout-

<tr class="DivClass-1">
            Div One 
     <td class="DivClass-A"> Div A </td> 
</tr>
<tr class="DivClass-2">
            Div Two
    <td class="DivClass-A"> Div B </td>
</tr>
 <tr class="DivClass-3">
            Div Three
     <td class="DivClass-A"> Div C </td>
 </tr>
 <tr class="DivClass-4">
            Div Four 
     <td class="DivClass-A"> Div D </td>
 </tr>

Upvotes: 1

user2036918
user2036918

Reputation:

Use replaceall() to replace all div tags

Upvotes: 1

Related Questions