【问题标题】:How to extract color from span which is in p tag from an html using JSOUP?如何使用 JSOUP 从 html 的 p 标签中提取颜色?
【发布时间】:2013-09-12 01:46:00
【问题描述】:
    <h2>This is a heading</h2>
        <p>My mother has 
        <span style="color:blue;font-weight:bold">blue</span>
        eyes and my father has 
        <span style="color:darkolivegreen;font-weight:bold">
        dark green</span> 
        eyes.</p>
<h3>This is another heading<h3>
<p>This is a paragraph</p>

“我妈妈有蓝色眼睛,我爸爸有深绿色眼睛”。我想使用 JSOUP 解析这个句子,并在 android textview 上用粗体和彩色文本打印相同的句子。这里的“蓝色”是粗体和蓝色。 “深绿色”是粗体和彩色的。

我需要解析上面的html代码,需要这样显示:

这是一个标题
我妈妈有蓝色眼睛,我爸爸有深绿色眼睛
这是另一个标题
这是一段

下面是我的程序。考虑 Document doc == get above html;

    Elements eHeadder = doc.select("*");
    for (Element eHead : eHeadder) {
    String tag = eHead.tagName();
    if (tag.equals("p")) {
    String pText = eHead.text();
    tv.setText(pText);
    }else if(tag.equals("h2")){
      String pText = eHead.text();
      tv.setText(pText);
      }else if(tag.equals("h3")){
      String pText = eHead.text();
      tv.setText(pText);
      }
   }
  1. 谁能帮我解决一下?
  2. 我对使用 doc.select("p") 和 doc.select("p").first 感到困惑;您在回复时也能解释一下吗?

【问题讨论】:

  • 嗯,我不明白你喜欢做什么。 “h2”来自哪里。不知怎的,我不明白标题和你的问题是如何联系在一起的
  • 啊,你喜欢解析css值吗?
  • 请评论您需要什么,我会尽力帮助您
  • 是的。你说的对!我需要解析一个html页面。以上代码只是我程序的一部分。 if 语句解析 p 标签中的所有数据。同样,如果我添加另一个,如果 else(tag.equals("h2")) 我可以解析 h2 中的所有数据。但我需要在 中获取数据,而 span 在

    中。你可以看到我发布的html。

  • 你能检查一下最后的帖子吗?你是这个意思吗?

标签: java android html-parsing jsoup


【解决方案1】:

这是你说的吗?

public static void main(final String[] args)
{
    final String html = "<p>My mother has\n" +
            "<span style=\"color:blue;font-weight:bold\">blue</span>\n" +
            "eyes and my father has\n" +
            "<span style=\"color:darkolivegreen;font-weight:bold\">\n" +
            "dark green</span>\n" +
            "eyes.</p>\n" +
            "<h2>Mr. <span style=\"color:green\">Foobar</span></h2>";

    final Document document = Jsoup.parse(html);

    final Elements textNodes = document.select("p,h2");

    for (final Element element : textNodes)
    {
        System.out.println("Found: " + element.text());

        System.out.println("\t Neasted Spawns:");
        for (final Element span : element.select("span"))
        {
            System.out.println("\t\t css: " + span.attr("style"));
        }
    }
}

它将打印:

Found: My mother has blue eyes and my father has dark green eyes.
     Neasted Spawns:
         css: color:blue;font-weight:bold
         css: color:darkolivegreen;font-weight:bold
Found: Mr. Foobar
     Neasted Spawns:
         css: color:green

【讨论】:

  • 非常感谢@Christian Schneider。那行得通!!!!我不知道我可以在 select 语句中使用多个标签。您在这里使用的逻辑节省了很多代码行!!!再次感谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2019-09-26
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多