java - 解析 HTML 信息以找出所选选项

标签 java jsoup

我正在使用 Java 和 Jsoup 库来解析 html 中的文本。 在 html 中,我有两个选项,称为“单个”和“多个”。两者旁边都有一个复选标记,如果选择的选项是“单一”,则复选框会被选中,而“多个”框则不会被选中。我需要找到一种使用代码选择哪个选项(无论是多个还是单个)的方法。我真的很感谢你的帮助。谢谢。

Image show options


  <table class="MsoNormalTable" style="border-collapse:collapse;mso-yfti-tbllook:1184;mso-padding-alt:0in 0in 0in 0in" cellspacing="0" cellpadding="0" border="1">
   <tbody><tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;height:21.0pt">
    <td style="width:36.75pt;border-top:solid windowtext 1.0pt;
    border-left:solid windowtext 1.0pt;border-bottom:none;border-right:none;
    background:#F2F2F2;padding:.75pt .75pt .75pt .75pt;height:21.0pt" width="49">
    <p class="MsoNormal" style="margin-top:0in;margin-right:-6.0pt;
    margin-bottom:0in;margin-left:-6.0pt;margin-bottom:.0001pt;text-align:center;
    vertical-align:baseline" align="center">​​<span style="font-family:&quot;MS Gothic&quot;">☒</span>​&nbsp;&nbsp;</p>
    </td>
    <td style="width:442.5pt;border-top:solid windowtext 1.0pt;
    border-left:none;border-bottom:none;border-right:solid windowtext 1.0pt;
    background:#F2F2F2;padding:.75pt .75pt .75pt .75pt;height:21.0pt" width="590">
    <p class="MsoNormal" style="margin-left:1.5pt;vertical-align:baseline"><span style="font-size:10.0pt">Single&nbsp;</span></p>
    </td>
   </tr>
   <tr style="mso-yfti-irow:1;mso-yfti-lastrow:yes">
    <td style="width:36.75pt;border:none;border-left:solid windowtext 1.0pt;
    background:#F2F2F2;padding:.75pt .75pt .75pt .75pt" width="49">
    <p class="MsoNormal" style="margin-top:0in;margin-right:-6.0pt;
    margin-bottom:0in;margin-left:-6.0pt;margin-bottom:.0001pt;text-align:center;
    vertical-align:baseline" align="center">​​<span style="font-family:&quot;MS Gothic&quot;">☐</span>​&nbsp;</p>
    </td>
    <td style="width:442.5pt;border:none;border-right:solid windowtext 1.0pt;
    background:#F2F2F2;padding:.75pt .75pt .75pt .75pt" width="590">
    <p class="MsoNormal" style="margin-left:1.5pt;vertical-align:baseline"><span style="font-size:10.0pt">Multiple&nbsp;</span></p>
    </td>
   </tr>
  </tbody></table>
  <p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:
  10.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;</span></p>

最佳答案

试试这个:

Document doc = Jsoup.parse(html);
String selected = doc.select("tr:contains(☒) td:eq(1)").first().text();

selected 应包含所选选项的文本,“Single”“Multiple”

tr:contains(☒) 选择器选择包含 ☒ 符号的表格行,然后 td:eq(1) 选择该行中的第二个表格单元格排。 (它从 0 开始计数,因此第一个单元格是数字 0,第二个单元格是数字 1 等)

关于java - 解析 HTML 信息以找出所选选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453654/

相关文章:

java - Hibernate:将面部嵌入存储在 128 列中

java - JSoup 的 select() 方法是上下文相关的吗?

java - 如何使用 JSoup 从另一个元素中删除一个元素?

java - 无法获取 HTML 元素 (JSOUP)

java - 使用 Java 登录 Instagram

java - Jsoup 解析非空替代文本

java - 在 HDFS 上追加文件的推荐方法是什么?

java 枚举上的 boolean 运算符

java - HTTP 请求 Android - 尝试调用虚拟方法

java - Jackson:使用泛型将对象反序列化为数组