私はJavaの専門家ではないことにご注意ください。可能であれば、助けと指導をお願いします。複数のHTMLテーブル行のJavaループ
ファイルの内容を読み込んで、JSOUPを使用してhtmlに解析するJavaコードがあります。私はその後、JSONにテーブルを変換する必要があります。最初の行は正常に変換されますが、次の行は変換されません。
シンプルなものが欠けていると私は確信しています。
私のプログラム以下:JSONに変換する必要が
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 is = 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");
for (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>
<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>
は、JSONの出力が必要:
[
{
"skill": "reading",
"beginner": "✔",
"intermediate": "✔",
"advanced": "✔"
},
{
"skill": "writing",
"beginner": "◯",
"intermediate": "✔",
"advanced": "✔"
},
{
"skill": "speaking",
"beginner": "◯",
"intermediate": "◯",
"advanced": "✔"
},
{
"skill": "interacting",
"beginner": "●",
"intermediate": "●",
"advanced": "● ●"
}
]
あなたのご指導とご協力をよろしくお願い申し上げます。
これは 'row.sizeを(返すんどう) ' –
こんにちは@SagarRohankar、それは5行のために5を返します。 – FireHawk2300