Java loop on multiple HTML table rows -


please note no java expert, appreciate , guidance possible.

i have piece of java code reads contents of files , parses html using jsoup. need convert table json. first row converts successfully, none of following rows getting converted.

i sure simple missing on looking, appreciate guidance / assistance.

my program below:

package html_to_json_parser;  import java.io.bufferedreader; import java.io.fileinputstream; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import org.json.jsonobject; import org.jsoup.jsoup; import org.jsoup.nodes.document; import org.jsoup.nodes.element; import org.jsoup.select.elements;   public class html_to_json_parser {   public static void main(string[] args) throws ioexception {      inputstream = new fileinputstream("skills_table.html");      bufferedreader buf = new bufferedreader(new inputstreamreader(is));      string line = buf.readline();      stringbuilder sb = new stringbuilder();       while(line != null){         sb.append(line).append("\n");         line = buf.readline();      }      string htmlfile = sb.tostring();       document doc = jsoup.parse(htmlfile);     jsonobject jsonobject = new jsonobject();     jsonobject jsonparentobject = new jsonobject();     element table = doc.select("table").first();     elements row = table.getelementsbytag("tr");                  (int j = 0, k = row.size(); j < k; j++) {              elements cols = row.select("td");             string skill = cols.get(0).text();             string beginner = cols.get(1).text();             string intermediate = cols.get(2).text();             string advanced = cols.get(3).text();             jsonobject.put("beginner", beginner);             jsonobject.put("intermediate", intermediate);             jsonobject.put("advanced", advanced);             jsonparentobject.put(skill,jsonobject);          }      system.out.println(jsonparentobject.tostring());      }  } 

html table needs converted json:

<table>    <thead>      <tr>        <th>skill</th>        <th>beginner</th>        <th>intermediate</th>        <th>advanced</th>      </tr>    </thead>    <tbody>      <tr>        <td>reading</td>        <td>✔</td>        <td>✔</td>        <td>✔</td>      </tr>      <tr>        <td>speaking</td>        <td>◯</td>        <td>✔</td>        <td>✔</td>      </tr>      <tr>        <td>writing</td>        <td>◯</td>        <td>◯</td>        <td>✔</td>      </tr>      <tr>        <td>interacting</td>        <td>●</td>        <td>●</td>        <td>● ●</td>      </tr>    </tbody>  </table>

require json output:

[     {         "skill": "reading",         "beginner": "✔",         "intermediate": "✔",         "advanced": "✔"     },     {         "skill": "writing",         "beginner": "◯",         "intermediate": "✔",         "advanced": "✔"     },     {         "skill": "speaking",         "beginner": "◯",         "intermediate": "◯",         "advanced": "✔"     },     {         "skill": "interacting",         "beginner": "●",         "intermediate": "●",         "advanced": "● ●"     } ] 

your guidance , assistance appreciated.

element table = doc.select("tbody").first(); 

replace "tbody" instead of "table"

and

elements cols = row.eq (j).select("td"); 

change above, here missed jth tr element , extract details.

btw can use () instead of eq () work

jsonobject jsonobject = new jsonobject(); 

ew.. big mistake. shoud put above initiation inside loop. because every loop updating same object's parameters results in lastly updated details.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -