0

(問題に適切にラベルを付ける方法がわからなかったので、タイトルを気にしないでください)。

私はJavaDOMパーサーを使用して、RSSフィードを解析し、ファイル(.xml)を出力しています。1つの主要なコンポーネントを除いてすべて機能します。(一部は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タグからYoutubeIDを正常に取得できます。ただし、投稿に複数の動画がある場合は、正しい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>

私はそれが本当に単純なものであるとかなり確信しています、そして私はそれを見逃しているだけです。

編集:irrelephantに感謝(フォーマットを修正するため)

繰り返しになりますが、私の詳細の欠如や本当に単純な音を混乱させることを許してください、しかし私は目前の問題を適切に表現する方法がわかりません。

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 に答える