[英]How to change color of a cell in HTML table using JSoup?
我需要使用 Java 和 Jsoup 解析一個表,並根據它的值更改單元格的顏色。 這就是 html 表的樣子,也是需要定義單元格顏色的方式
<tr>
<td colspan="1">Test1</td>
<td colspan="1">JD</td>
<td colspan="1">N</td>
<td colspan="1">A</td>
</tr>
<tr>
<td>Test2</td>
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr>
<td class="highlight-#fff0b3" title="Background color : Light yellow 100%" data-highlight-colour="#fff0b3">COLOR YELLOW</td>
<td class="highlight-#fff0b3" title="Background color : Light yellow 100%" data-highlight-colour="#fff0b3">YELL</td>
<td class="highlight-#fff0b3" title="Background color : Light yellow 100%" data-highlight-colour="#fff0b3">N/A</td>
<td class="highlight-#fff0b3" title="Background color : Light yellow 100%" data-highlight-colour="#fff0b3">N/A</td>
</tr>
我寫了一個腳本,可以准備一個單元格的值並從中更改文本,但是我無法同時更改顏色
Document doc = Jsoup.parse(html);
Elements rows = doc.getElementsByTag("tr");
String status = "Pass"
for(Element row : rows) {
String Column1 = row.getElementsByTag("td").get(0).text();
if(Column1 == "MyValue"){
row.getElementsByTag("td").get(1).text("CustomValue");
row.getElementsByTag("td").get(2).text("CustomValue");
row.getElementsByTag("td").get(3).text("SomeValue");
if(status == "Pass"){ // Everything below doesn't work
row.getElementsByTag("td").get(1).class("highlight-#57d9a3");
row.getElementsByTag("td").get(2).class("highlight-#57d9a3");
row.getElementsByTag("td").get(3).class("highlight-#57d9a3");
row.getElementsByTag("td").get(1).title("Background color : Medium green 65%");
row.getElementsByTag("td").get(2).title("Background color : Medium green 65%");
row.getElementsByTag("td").get(3).title("Background color : Medium green 65%");
} else if(status == "Fail"){
row.getElementsByTag("td").get(1).class("highlight-#ff7452");
row.getElementsByTag("td").get(2).class("highlight-#ff7452");
row.getElementsByTag("td").get(3).class("highlight-#ff7452");
row.getElementsByTag("td").get(1).title("Background color : Medium red 85%");
row.getElementsByTag("td").get(2).title("Background color : Medium red 85%");
row.getElementsByTag("td").get(3).title("Background color : Medium red 85%");
} else{
//TBD
}
}
這是我得到的錯誤:
No signature of method: org.jsoup.nodes.Element.class() is applicable for argument types: (java.lang.String) values: [highlight-#57d9a3]
10:44:33 Possible solutions: clone(), clone(), addClass(java.lang.String), hasClass(java.lang.String), val(java.lang.String), getClass()
row.getElementsByTag("td").get(1)
返回一個Element
,它沒有class
方法。
但是,它有一個classNames
方法,並且接受一個Set<String>
作為參數(即使您只需要傳遞一個類)。
所以你可以做類似的事情
row.getElementsByTag("td").get(1).classNames(Set.of("highlight-#57d9a3"));
等等。
除了那個編譯錯誤, if(status == "Pass")
不是你在 java 中比較字符串的方式。 您需要執行類似if("Pass".equals(status))
的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.