簡體   English   中英

如何使用 JSoup 更改 HTML 表中單元格的顏色?

[英]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.

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