我正在尝试用更新的值替换html标记。我曾尝试过使用JSOUP,但还没办法解决问题。
功能:
if (webText.contains("a href")) {
// Parse it into jsoup
Document doc = Jsoup.parse(webText);
// Create an array to tackle every type individually as wrap can
// affect whole body types otherwises.
Element[] array = new Element[doc.select("a").size()];
for (int i = 0; i < doc.select("a").size(); i++) {
if (doc.select("a").get(i) != null) {
array[i] = doc.select("a").get(i);
}
}
for (int i = 0; i < array.length; i++) {
if (array[i].toString().contains("http")) {
Log.e("Link", array[i].toString());
Pattern p = Pattern.compile("href=\"(.*?)\"");
Matcher m = p.matcher(array[i].toString());
String url = null;
if (m.find()) {
url = m.group(1); // this variable should contain the link URL
Log.e("Link Value", url);
array[i] = array[i].wrap("<a href='"+url+"' class='link'></a>");
}
}
else {
Log.e("Favourite", array[i].toString());
Pattern p = Pattern.compile("href=\"(.*?)\"");
Matcher m = p.matcher(array[i].toString());
String url = null;
if (m.find()) {
url = m.group(1); // this variable should contain the link URL
Log.e("Favourite Value", url);
array[i] = array[i].wrap("<a href='"+url+"' class='favourite'></a>");
//array[i] = array[i].replaceWithreplaceWith("","");
}
}
}
Element element = doc.body();
Log.e("From element html *************** ", " " + element.html());
String currentHtml = wrapImgWithCenter(element.html());
Log.e("currentHtml", currentHtml);
listOfElements = currentHtml;
}
这个array[i] = array[i].wrap("<a href='"+url+"' class='favourite'></a>");
基本上用新值包装现有标签。但我不希望这种情况发生。我想用以下内容完全替换标签:
"<a href='"+url+"' class='favourite'>+url+"</a>";
输入:
<html>
<head></head>
<body>
<p dir="ltr"><a href="gYWMBi5XqN" class="favourite"></a><a href="gYWMBi5XqN"><font color="#009a49">Frank Frank</font></a> <a href="http://yahoo.co.in" class="link"></a><a href="http://yahoo.co.in"><font color="#0033cc">http://yahoo.co.in</font></a></p>
<br />
<br />
</body>
</html>
预期输出:
<html>
<head></head>
<body>
<p dir="ltr"><a href="gYWMBi5XqN" class="favourite"><font color="#009a49">Frank Frank</font></a> <a href="http://yahoo.co.in" class="link"><font color="#0033cc">http://yahoo.co.in</font></a></p>
<br />
<br />
</body>
</html>
我尝试使用replaceWith
但未成功。您仍然可以在上面提供的源代码中找到它。 请告诉我哪里出错了?我该怎么做才能更新标签?
P.S。:输入可能是变量,带有一些或多或少的标签。
答案 0 :(得分:0)
您可以使用课程replaceWith
的{{1}}方法。我已经清除了你的代码了一下。删除了阵列并尽可能使用提供的列表。此外,当您已经解析了html时,您不需要正则表达式来获取Element
属性(或任何其他属性)。如果您需要进一步的帮助,请查看并通知我。
href
<强>输入强>
import org.jsoup.Jsoup;
import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Tag;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws Exception {
String webText =
"<html>" +
"<head></head>" +
"<body>" +
"<p dir=\"ltr\">" +
"<a href=\"gYWMBi5XqN\" class=\"favourite\"></a>" +
"<a href=\"gYWMBi5XqN\"><font color=\"#009a49\">Frank Frank</font></a>" +
"<a href=\"http://yahoo.co.in\" class=\"link\"></a>" +
"<a href=\"http://yahoo.co.in\"><font color=\"#0033cc\">http://yahoo.co.in</font></a>" +
"</p>" +
"</body>" +
"</html>";
if (webText.contains("a href")) {
// Parse it into jsoup
Document doc = Jsoup.parse(webText);
Elements links = doc.select("a");
for (Element link : links) {
if (link.attr("href").contains("http")) {
System.out.println("Link: " + link.toString());
String url = link.attr("href");
if (url != null) {
System.out.println("Link Value: " + url);
Attributes attributes = new Attributes();
attributes.put("href", url);
attributes.put("class", "link");
link.replaceWith(new Element(Tag.valueOf("a"), "", attributes).insertChildren(0, link.childNodes()));
}
} else {
System.out.println("Favourite: " + link.toString());
String url = link.attr("href");
if (url != null) {
System.out.println("Favourite Value: " + url);
Attributes attributes = new Attributes();
attributes.put("href", url);
attributes.put("class", "favourite");
link.replaceWith(new Element(Tag.valueOf("a"), "", attributes).insertChildren(0, link.childNodes()));
}
}
}
Element element = doc.body();
System.out.println("From element html *************** "+ element.html());
}
}
}
<强>输出强>
<p dir="ltr">
<a href="gYWMBi5XqN" class="favourite"></a>
<a href="gYWMBi5XqN"><font color="#009a49">Frank Frank</font></a>
<a href="http://yahoo.co.in" class="link"></a>
<a href="http://yahoo.co.in"><font color="#0033cc">http://yahoo.co.in</font></a>
</p>
<强>输入强>
<p dir="ltr">
<a href="gYWMBi5XqN" class="favourite"></a>
<a href="gYWMBi5XqN" class="favourite"><font color="#009a49">Frank Frank</font></a>
<a href="http://yahoo.co.in" class="link"></a>
<a href="http://yahoo.co.in" class="link"><font color="#0033cc">http://yahoo.co.in</font></a>
</p>
<强>输出强>
<p dir="ltr">
<a href="gYWMBi5XqN"><font color="#009a49">Frank Frank</font></a>
<a href="http://yahoo.co.in"><font color="#0033cc">http://yahoo.co.in</font></a>
</p>