【问题标题】:JSOUP missing tag when converting html row转换 html 行时 JSOUP 缺少标记
【发布时间】:2020-04-06 02:37:31
【问题描述】:

我在使用 jsoup 时遇到问题,我想获取一行数据,稍后我将把该行插入到另一个 html 文档中。但是当我检查时发现没有和标签。我该如何解决它

String htmlcontent = "<tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr>";


Document docnewinput = Jsoup.parse(htmlcontent, "UTF-8");

[<html>
 <head></head>
 <body>
  <div class="content-wrapper">
   <p><strong><span class="CLASS 1 CLASS 2 CLASS 3">123</span></strong><br><strong>DATA 1</strong></p>
  </div>
 </body>
</html>]

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    您有一个要解析的正文 HTML 片段(例如,一个包含几个 p 标签的 div;而不是完整的 HTML 文档)。

    使用Jsoup.parseBodyFragment(String html) 方法。

    String html = "<table><tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr></table>";
    Document doc = Jsoup.parseBodyFragment(html);
    

    parseBodyFragment 方法创建一个空的 shell 文档,并将解析后的 H​​TML 插入到 body 元素中。如果您使用普通的Jsoup.parse(String html) 方法,通常会得到相同的结果,但将输入显式视为正文片段可确保将用户提供的任何 bozo HTML 解析为正文元素。

    解析器将尽一切努力从您提供的 HTML 中创建干净的解析,无论 HTML 是否格式正确。它处理: 未封闭标签(e.g. &lt;p&gt;Lorem &lt;p&gt;Ipsum parses to &lt;p&gt;Lorem&lt;/p&gt; &lt;p&gt;Ipsum&lt;/p&gt;) 隐式标签(e.g. a naked &lt;td&gt;Table data&lt;/td&gt; is wrapped into a &lt;table&gt;&lt;tr&gt;&lt;td&gt;...) 可靠地创建文档结构(包含头部和正文的 html,并且只在头部中包含适当的元素)

    编辑:

    通过使用 Jsoup.parse():

    String html = "<table><tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr></table>";
    Document doc = Jsoup.parse(html);
    

    工作演示:https://try.jsoup.org/~EdJSrHl_biDcQkyhL2BLH5ZNnck

    【讨论】:

    • 嗨,还是一样的tr,td标签没有出现
    • @SoftwareEngineer 您是否尝试过使用 Jsoup.parse()。这应该有效。用详细信息更新了答案。
    • 嗨,我尝试添加这个 Parser.xmlParser() 然后它可以工作
    • 根据您的评论,如果您尝试

      123
      数据 1

      不行。所以需要使用 xmlParser
    【解决方案2】:

    需要使用 xmlParser() 以便它只读取字符串而不格式化它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多