【问题标题】:get all element and value of html in android获取android中html的所有元素和值
【发布时间】:2016-05-07 09:22:07
【问题描述】:

我有一些像这样的html:

<p>text1 &nbsp;</p>
<p><img src="http://theSite.com/apple.png" alt="apple-touch-icon-144x144-precomposed" /></p>
<p><img src="http://theSite.com/sony.gif" alt="cool" /></p>
<p style="text-align: center;">Second Text&nbsp;</p>
<p><img src="http://theSite.com/img.jpg" alt="2" /></p>
<p>&nbsp;</p>
<p style="text-align: left;">TextAgain&nbsp;</p>

我需要在列表或数组中获取元素名称和一些属性。 只是标签的名称(如 p)和标签之间的文本以及 img 标签的 src 属性。

像这样:

 String[] elements = {
        "p",
        "p",
        "img",
        "p",
        "img"
    }

String[] values = {
    "text1 &nbsp;",
    "<img src=...",
    "http://thesite.com/apple.png",
    "<img src=...",
    "http://thesite.com/sony.gif"
}

有没有像 Jsoup 这样的库或任何方法来做到这一点?

【问题讨论】:

标签: android html regex html-parsing jsoup


【解决方案1】:

你可以这样做:

package com.github.davidepastore.stackoverflow35087945;

import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * Stackoverflow question 35087945
 *
 */
public class App {
    public static void main(String[] args) {
        String html = "<p>text1 &nbsp;</p><p><img src=\"http://theSite.com/apple.png\" alt=\"apple-touch-icon-144x144-precomposed\" /></p><p><img src=\"http://theSite.com/sony.gif\" alt=\"cool\" /></p><p style=\"text-align: center;\">Second Text&nbsp;</p><p><img src=\"http://theSite.com/img.jpg\" alt=\"2\" /></p><p>&nbsp;</p><p style=\"text-align: left;\">TextAgain&nbsp;</p>";
        Document document = Jsoup.parse(html);
        Elements elements = document.select("body *");
        List<String> tagNames = new ArrayList<String>();
        List<String> values = new ArrayList<String>();
        for (Element element : elements) {
            String tagName = element.tagName();
            tagNames.add(tagName);
            if ("img".equals(tagName)) {
                values.add(element.attr("src"));
            } else {
                values.add(element.html());
            }
        }
        System.out.println(tagNames);
        System.out.println(values);
    }
}

它将打印:

[p, p, img, p, img, p, p, img, p, p]
[text1 &nbsp;, <img src="http://theSite.com/apple.png" alt="apple-touch-icon-144x144-precomposed">, http://theSite.com/apple.png, <img src="http://theSite.com/sony.gif" alt="cool">, http://theSite.com/sony.gif, Second Text&nbsp;, <img src="http://theSite.com/img.jpg" alt="2">, http://theSite.com/img.jpg, &nbsp;, TextAgain&nbsp;]

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 2016-12-06
    • 2018-12-20
    • 2021-04-17
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多