0

(我不知道如何正确标记我的问题,所以不要介意标题)。

我正在使用 java DOM Parser 来解析 rss 提要并输出文件 (.xml)。除了一个主要组件外,这一切都有效。(某些部分使用 Jsoup)

<content:encoded>标签(文章正文)中,它必须将所有<iframe>标签更改为<a>标签,并将其视觉部分设置为 iframe 标签中包含的视频的缩略图。

这是获取转换标签和更改标签的 html 的代码。

String html = theString;
org.jsoup.nodes.Document docHtml = Jsoup.parse(html);
Elements body = docHtml.select("body");

Elements iframes = body.select("iframe");
iframes.tagName("a");
iframes.removeAttr("width");
iframes.removeAttr("height");
iframes.removeAttr("allowfullscreen");
iframes.removeAttr("frameborder");
//iframes.attr("href", youtubeURL);

for(int k=0; k<1; k++) {

    String[] array;
    String[] array1;
    array = new String[10];
    array1 = new String[10];

    String youtubeID = "";
    String link = "";

    array[k] = iframes.attr("src");
    //System.out.println(array[k]);
    String pattern = "(?<=watch\\?v=|/embed/)[^&#]*";
    Pattern compiledPattern = Pattern.compile(pattern);
    Matcher matcher = compiledPattern.matcher(array[k]);
    while(matcher.find()){
        array1[k] = matcher.group();

        //System.out.println(matcher.group());
        //This is the line in question
        iframes.html("<img src=\"http://img.youtube.com/vi/"+array1[k]+"/0.jpg\"/></br>Tap to play video");
        System.out.println(iframes);
    }

所有的解析工作,我可以使用正则表达式成功地从 iframe 标签中获取 Youtube ID。但是,如果帖子有多个视频,而不是插入所有正确的 ID,它只会插入该帖子中第一个视频的 ID。

所以而不是(请原谅格式)

a src="http://www.youtube.com/embed/5CzKyR6jzyw"><img    src="http://img.youtube.com/vi/5CzKyR6jzyw/0.jpg" /><br />Tap to play video</a>

它给出(注意 img src 属性)

<a src="http://www.youtube.com/embed/qxur7H_CtM0"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/nQl1Y5suqP4"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/H47WhjHcBSw"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/UMr6_ODZsFg"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/u8qzrBcont8"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/0283IhwTWd4"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>


<a src="http://www.youtube.com/embed/HOgnsaixbwE"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>

我很确定这很简单,我只是想念它。

编辑:感谢无关(用于修复格式)

再次,请原谅我缺乏细节和/或让一些非常简单的东西听起来令人困惑,但我不知道如何正确表达手头的问题。

4

1 回答 1

0

解决了!

我改变了 Jsoup 获取 URL 的方式。之前,它只是获取第一个元素的 URL,我忽略了它。

所以我改变了

array[k] = iframes.attr("src");

至:

for (Element e : body.select("iframe")) {

  //This gets individual elements, rather than the first one of each post.
  array[k] = e.attr("src");

  String pattern = "(?<=watch\\?v=|/embed/)[^&#]*";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(array[k]);
while(matcher.find()){
    array1[k] = matcher.group();



    e.html("<img src=\"http://img.youtube.com/vi/"+array1[k]+"/0.jpg\"/></br>Tap to play video");
    //System.out.println(iframes);
}

(还有其他更改,但这是来自原始帖子中提到的代码)。

现在它输出(就像它应该的那样,但显然我把它更改为src属性href,否则这将是愚蠢和适得其反的):

 <a src="http://www.youtube.com/embed/qxur7H_CtM0"><img src="http://img.youtube.com/vi/qxur7H_CtM0/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/nQl1Y5suqP4"><img src="http://img.youtube.com/vi/nQl1Y5suqP4/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/H47WhjHcBSw"><img src="http://img.youtube.com/vi/H47WhjHcBSw/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/UMr6_ODZsFg"><img src="http://img.youtube.com/vi/UMr6_ODZsFg/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/u8qzrBcont8"><img src="http://img.youtube.com/vi/u8qzrBcont8/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/0283IhwTWd4"><img src="http://img.youtube.com/vi/0283IhwTWd4/0.jpg" /><br />Tap to play video</a>
 <a src="http://www.youtube.com/embed/HOgnsaixbwE"><img src="http://img.youtube.com/vi/HOgnsaixbwE/0.jpg" /><br />Tap to play video</a>
于 2012-12-29T11:56:27.253 回答