TagHandler处理Youtube标记<iframe>?</iframe>

时间:2012-11-13 17:22:24

标签: android html

我正在使用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>");
        }
    }
}

提前致谢。

2 个答案:

答案 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>");