【问题标题】:Array repeating data on output数组重复输出数据
【发布时间】:2012-12-29 19:56:27
【问题描述】:

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

我正在使用 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>

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

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

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

【问题讨论】:

    标签: java jsoup domparser


    【解决方案1】:

    解决了!

    我改变了 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2015-12-15
      • 2016-10-29
      • 2013-07-16
      • 1970-01-01
      相关资源
      最近更新 更多