xml element inhalt auslesen

strukturart

Erfahrenes Mitglied
Hallo,

ich versuch die Rss-Feed von Youtube Kanälen auszulesen.
Jedoch verwenden sie in ihren Element Name das : Zeichen ->
Code:
Error: Syntax error, unrecognized expression: unsupported pseudo: description
wie kann man solche Element auslesen ?

Mein Versuch:

Code:
   $(data).find('entry').each(function(index) {
                    if (index < param_limit) {

                        var item_title = $(this).find('title').text();
                        var item_summary = $(this).find('summary').text();

                        //youtube
                        alert($(this).find('media:group').first().text());

                        var item_link = $(this).find('link').attr("href");
                        var item_download = $(this).find('enclosure').attr('url')
                        var item_date_unix = Date.parse($(this).find('updated').text());
                        item_date = new Date(item_date_unix)
                        item_date = item_date.toGMTString();
                        var item_type = $(this).find('enclosure').attr('type')

                        content_arr.push([item_title, item_summary, item_link, item_date, item_date_unix, param_channel, param_categorie, item_download, item_type])

                    }

                })
 
Vieleicht hilft dir das weiter.
Das Script
HTML:
<div id="out"></div>
<script>
var sammeln='';
var url ="youtube.xml";
var param_limit=1;
   $.ajax({
    type: "GET" ,
    url: url ,
    dataType: "xml" ,
    success: function(data) {

       $(data).find('entry').each(function(index) {
                if (index < param_limit) {
                        var pup = Date.parse($(this).find('published').text());
                        item_pup = new Date(pup)
                        var datumpup = item_pup.toGMTString();
                      
                        var item_date_unix = Date.parse($(this).find('updated').text());
                        item_date = new Date(item_date_unix)
                        var datum = item_date.toGMTString();
                      
                        var title = $(this).find('title').text();
                      
                        authorblock = $(this).find('author').children();
                        var author1=authorblock[0].textContent;
                        var authorurl=authorblock[1].textContent;
      
                        group2=$(this).children().last();
                        group=group2.children();

                        var med_title=group[0].textContent;
                        var med_content=group[1].getAttribute('url');
                        var med_thumb=group[2].getAttribute('url');
                        var med_desc=group[3].textContent;

                        var med_community_group=group[4].children;
                        var startRating_count=med_community_group[0].getAttribute('count')
                        var startRating_average=med_community_group[0].getAttribute('average');
                        var startRating_min=med_community_group[0].getAttribute('min');
                        var startRating_max=med_community_group[0].getAttribute('max');

                        var statistics_view=med_community_group[1].getAttribute('views')

                       sammeln+=`
                       Titel : ${title}<br>
                       Author : ${author1}<br>
                       url :  ${authorurl} <br>
                       Update : ${datum}<br>
                       published : ${datumpup}<br>
                       Media title ; ${med_title}<br>
                       Media dec : ${med_desc}<br>
                       Media Content ${med_content}<br>
                       Media Thumbnail ${med_thumb}<br>
                       Star Rating Count : ${startRating_count}<br>
                       Star Rating average : ${startRating_average}<br>
                       Star Rating Min : ${startRating_min}<br>
                       Star Rating Max : ${startRating_max}<br>
                       Statistic Views : ${statistics_view}<br>`;
               }
               $('body').html(sammeln);
       })
    }
})
</script>
macht bei mir diese ausgabe
Code:
Titel : Dragonbound - Episode 11: Die Legende von Katarak (Komplettes Hörspiel)
Author : Maritim Verlag
url : https://www.youtube.com/channel/UCjMzlcG7THh8QEsP5pWFr2w
Update : Sat, 30 May 2020 21:56:37 GMT
published :  Sat, 30 May 2020 18:00:01 GMT
Media title ; Dragonbound - Episode 11: Die Legende von Katarak (Komplettes Hörspiel)
Media dec : De von Gigaphon Entertainment. ( gekürzt durch basti1012)........
Media Content https://www.youtube.com/v/act-IiG8bRg?version=3
Media Thumbnail https://i2.ytimg.com/vi/act-IiG8bRg/hqdefault.jpg
Star Rating Count : 107
Star Rating average : 4.44
Star Rating Min : 1
Star Rating Max : 5
Statistic Views : 5635

EDIT:
Es ginge auch etwas kürzer
Javascript:
       $(data).find('entry').each(function(index) {
                if (index < param_limit) {                         
                        var papa=$(this).children();           
                        var id=papa[0].textContent;
                        var videoid=papa[1].textContent;
                        var channelid=papa[2].textContent;           
                        var title=papa[3].textContent;
                        var link=papa[4].getAttribute('href');
                        var author1=papa[5].children[0].textContent;
                        var authorurl=papa[5].children[1].textContent;
                        var datumpup = new Date(Date.parse(papa[6].textContent)).toGMTString();
                        var datum = new Date(Date.parse(papa[7].textContent)).toGMTString();
                        var med_title=papa[8].children[0].textContent;
                        var med_content=papa[8].children[1].getAttribute('url');
                        var med_thumb=papa[8].children[2].getAttribute('url');
                        var med_desc=papa[8].children[3].textContent;
                        var startRating_count=papa[8].children[4].children[0].getAttribute('count')
                        var startRating_average=papa[8].children[4].children[0].getAttribute('average');
                        var startRating_min=papa[8].children[4].children[0].getAttribute('min');
                        var startRating_max=papa[8].children[4].children[0].getAttribute('max');
                        var statistics_view=papa[8].children[4].children[1].getAttribute('views');
                }
       })
 
Zuletzt bearbeitet:
In Tagnames wie "<media:description>" ist media nur ein Kürzel für einen vorher länger definierten Namespace. Wenn ich mich nicht täusche, sollte das XML-Dokument semantisch äquivalent bleiben, auch wenn der Name des Kürzels geändert wird. Demnach möchte man wirklich innerhalb dieses Namespaces nach "description" suchen.
Aber das ist ingesamt ohne gescheite XML-Library wohl nicht so einfach möglich :-) Von daher, wenn es für euch funktioniert, würde ich es wohl so lassen.
 
Zurück