我正在使用Html.fromHtml()解析html。我的问题是我的html文本有youtube嵌入链接(基本上是<iframe>
标签)
因此,由于Html类不支持<iframe>
标记,因此我需要定义自己的TagHandler来处理它。我要做的是将<iframe>
转换为常规<a>
标记,以便可以正确呈现。
//convert this
<iframe src="http://www.youtube.com/embed/xAEdMI2ZE88" frameborder="0" width="560" height="315"></iframe>
//To this
<a href="http://www.youtube.com/embed/xAEdMI2ZE88">Click to Watch</a>
我的问题是我找不到从src
代码获取youtube的<iframe>
链接的方法。
这是我的TagHandler的handleTag()
方法:
@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
if (tag.equals("iframe")) {
if(opening) {
output.append("<a href=");
//How to get YouTube video link and append it?
}
else {
output.append("Click To Watch</a>");
}
}
}
提前致谢。
答案 0 :(得分:1)
我现在接受CommonsWare建议并修改字符串before
并将其传递给Html.fromHtml
。
//Opening tag
Pattern p = Pattern.compile("<iframe src");
Matcher m = p.matcher(htmlString);
while (m.find())
htmlString= m.replaceAll("<a href");
//Closing tag
p = Pattern.compile("frameborder=.*</iframe>");
m = p.matcher(htmlString);
while (m.find())
htmlString= m.replaceAll(">CLICK TO WATCH</a>");
答案 1 :(得分:1)
您也可以使用此正则表达式。
htmlString.replaceAll("<iframe\\s+.*?\\s+src=(\".*?\").*?<\\/iframe>", "<a href=$1>CLICK TO WATCH</a>");