获取 android 中 html 的所有元素和值
get all element and value of html in android
我有一些像这样的html:
<p>text1 </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 </p>
<p><img src="http://theSite.com/img.jpg" alt="2" /></p>
<p> </p>
<p style="text-align: left;">TextAgain </p>
我需要获取列表或数组中的元素名称及其某些属性。
只是标签的名称(如 p)和标签之间的文本以及 img 标签 src 属性。
像这样:
String[] elements = {
"p",
"p",
"img",
"p",
"img"
}
String[] values = {
"text1 ",
"<img src=...",
"http://thesite.com/apple.png",
"<img src=...",
"http://thesite.com/sony.gif"
}
是否有像 Jsoup 这样的库或任何方法来做到这一点?
您可以使用:
package com.github.davidepastore.Whosebug35087945;
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;
/**
* Whosebug question 35087945
*
*/
public class App {
public static void main(String[] args) {
String html = "<p>text1 </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 </p><p><img src=\"http://theSite.com/img.jpg\" alt=\"2\" /></p><p> </p><p style=\"text-align: left;\">TextAgain </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 , <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 , <img src="http://theSite.com/img.jpg" alt="2">, http://theSite.com/img.jpg, , TextAgain ]
我有一些像这样的html:
<p>text1 </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 </p>
<p><img src="http://theSite.com/img.jpg" alt="2" /></p>
<p> </p>
<p style="text-align: left;">TextAgain </p>
我需要获取列表或数组中的元素名称及其某些属性。 只是标签的名称(如 p)和标签之间的文本以及 img 标签 src 属性。
像这样:
String[] elements = {
"p",
"p",
"img",
"p",
"img"
}
String[] values = {
"text1 ",
"<img src=...",
"http://thesite.com/apple.png",
"<img src=...",
"http://thesite.com/sony.gif"
}
是否有像 Jsoup 这样的库或任何方法来做到这一点?
您可以使用:
package com.github.davidepastore.Whosebug35087945;
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;
/**
* Whosebug question 35087945
*
*/
public class App {
public static void main(String[] args) {
String html = "<p>text1 </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 </p><p><img src=\"http://theSite.com/img.jpg\" alt=\"2\" /></p><p> </p><p style=\"text-align: left;\">TextAgain </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 , <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 , <img src="http://theSite.com/img.jpg" alt="2">, http://theSite.com/img.jpg, , TextAgain ]