android - 获取android中html的所有元素和值

标签 android html regex html-parsing jsoup

我有一些像这样的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 这样的库或任何方法可以做到这一点?

最佳答案

你可以这样做:

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;]

关于android - 获取android中html的所有元素和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35087945/

相关文章:

regex - Ocaml - 正则表达式匹配以逗号分隔的单词不起作用

android - 在 Android 中使用 SQLite 将 DISTINCT 关键字添加到 query()

android - 自定义首选项标题字体大小大于 android 5 中的标准首选项

javascript - 有可能用 CSS 得到真实的英寸吗?

html - 使用 css 隐藏空表(带空格)

r - 在 r 中使用 grep 和非常大的正则表达式向量

ruby - 简单的正则表达式匹配适用于 rubular 但不适用于 IRB

java - 将文件从 SD 卡 move 到应用程序内部数据(存储)

android - 连接外部蓝牙设备并开始接收数据

javascript - 保持风格固定输入直到改变