php 用itunes解析xml标签:来自url的内容

3lxsmp7m  于 2022-10-30  发布在  PHP
关注(0)|答案(2)|浏览(204)

我正在努力用simplexml_load_file PHP从url解析xml。我在这里找到了很多关于stackoverflow的例子,但是没有人给我我期望的结果。

这是xml URL的一部分。我想要取得的是itunes:image或google:image标签

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rss.xslt" ?>
<rss
    xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
    xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:spotify="http://www.spotify.com/ns/rss"
    xmlns:psc="http://podlove.org/simple-chapters/"
    xmlns:media="https://search.yahoo.com/mrss/"
    version="2.0">
    <channel>
        <title>"Anecdotes"</title>
                    <link>https://podcast.ausha.co/anecdotes</link>
                <atom:link rel="self" type="application/rss+xml" href="https://feed.ausha.co/bVn6ghlkLaaz"/>
        <description>"Anecdotes" met en lumière des histoires insolites et incroyables, de personnalités connues, ou non, et dont on va pouvoir tirer ensemble, 3 leçons sur la vie, le travail ou l'entrepreneuriat. 
Bonjour, je suis Baptiste Piocelle, entrepreneur, co-fondateur de Canoa et podcasteur. Dans mon émission, vous découvrirez des histoires extraordinaires qui vous feront progresser dans vos objectifs de vie. Identifiez-vous facilement aux invités avec un panel très large de personnalités, de métiers et de caractères. Une émission sans langue de bois ni montage, la vérité à l'état pur. 
Écoutez des personnalités connues raconter des Anecdotes inédites sur leur vie, puis écoutez votre voisin parler de l'histoire incroyable qui lui est arrivé, le choix est votre. 
N'hésitez pas à aimer, noter, partager et commenter le podcast. Si vous le partagez à 3 personnes autour de vous, ensemble, nous atteindrons des sommets. 
Merci et bonne écoute !
Amicalement vôtre, 

Baptiste Piocelle</description>
        <language>fr</language>
        <copyright>Baptiste Piocelle</copyright>
        <lastBuildDate>Sun, 25 Apr 2021 08:01:04 +0000</lastBuildDate>
        <pubDate>Sun, 25 Apr 2021 08:01:04 +0000</pubDate>
        <webMaster>feeds@ausha.co (Ausha)</webMaster>
        <generator>Ausha (https://www.ausha.co)</generator>
                    <spotify:countryOfOrigin>fr</spotify:countryOfOrigin>

        <itunes:author>Baptiste Piocelle</itunes:author>
        <itunes:owner>
            <itunes:name>Baptiste Piocelle</itunes:name>
            <itunes:email>baptiste.piocelle@gmail.com</itunes:email>
        </itunes:owner>
        <itunes:summary>"Anecdotes" met en lumière des histoires insolites et incroyables, de personnalités connues, ou non, et dont on va pouvoir tirer ensemble, 3 leçons sur la vie, le travail ou l'entrepreneuriat. 
Bonjour, je suis Baptiste Piocelle, entrepreneur, co-fondateur de Canoa et podcasteur. Dans mon émission, vous découvrirez des histoires extraordinaires qui vous feront progresser dans vos objectifs de vie. Identifiez-vous facilement aux invités avec un panel très large de personnalités, de métiers et de caractères. Une émission sans langue de bois ni montage, la vérité à l'état pur. 
Écoutez des personnalités connues raconter des Anecdotes inédites sur leur vie, puis écoutez votre voisin parler de l'histoire incroyable qui lui est arrivé, le choix est votre. 
N'hésitez pas à aimer, noter, partager et commenter le podcast. Si vous le partagez à 3 personnes autour de vous, ensemble, nous atteindrons des sommets. 
Merci et bonne écoute !
Amicalement vôtre, 

Baptiste Piocelle</itunes:summary>
        <itunes:explicit>no</itunes:explicit>
        <itunes:block>no</itunes:block>
        <itunes:type>episodic</itunes:type>
                    <itunes:subtitle>Anecdotes insolites et incroyables de personnes connues, ou non.</itunes:subtitle>

        <googleplay:author>Baptiste Piocelle</googleplay:author>
        <googleplay:email>baptiste.piocelle@gmail.com</googleplay:email>
        <googleplay:description>"Anecdotes" met en lumière des histoires insolites et incroyables, de personnalités connues, ou non, et dont on va pouvoir tirer ensemble, 3 leçons sur la vie, le travail ou l'entrepreneuriat. 
Bonjour, je suis Baptiste Piocelle, entrepreneur, co-fondateur de Canoa et podcasteur. Dans mon émission, vous découvrirez des histoires extraordinaires qui vous feront progresser dans vos objectifs de vie. Identifiez-vous facilement aux invités avec un panel très large de personnalités, de métiers et de caractères. Une émission sans langue de bois ni montage, la vérité à l'état pur. 
Écoutez des personnalités connues raconter des Anecdotes inédites sur leur vie, puis écoutez votre voisin parler de l'histoire incroyable qui lui est arrivé, le choix est votre. 
N'hésitez pas à aimer, noter, partager et commenter le podcast. Si vous le partagez à 3 personnes autour de vous, ensemble, nous atteindrons des sommets. 
Merci et bonne écoute !
Amicalement vôtre, 

Baptiste Piocelle</googleplay:description>
        <googleplay:explicit>no</googleplay:explicit>

                    <category>Business</category>
            <itunes:category text="Business">
                <itunes:category text="Entrepreneurship"/>
            </itunes:category>
            <googleplay:category text="Business"/>

                    <image>
                <url>https://image.ausha.co/XhB165o4xydsexMnRaeWnChVEQyzCCCHesge5RBF_1400x1400.jpeg?t=1606905283</url>
                <title>"Anecdotes"</title>
                                    <link>https://podcast.ausha.co/anecdotes</link>
                            </image>
            <itunes:image href="https://image.ausha.co/XhB165o4xydsexMnRaeWnChVEQyzCCCHesge5RBF_1400x1400.jpeg?t=1606905283"/>
            <googleplay:image href="https://image.ausha.co/XhB165o4xydsexMnRaeWnChVEQyzCCCHesge5RBF_1400x1400.jpeg?t=1606905283"/>

                    <item>
                <title>#18 "J'ai tout plaqué du jour au lendemain pour partir seule, j'ai torpillé ma vie." Camille Dubois-Leipp, fondatrice de Outtrip.</title>
                <guid isPermaLink="false">049ecaaadeaca289eb4975b02eee9edb1b8c4792</guid>
                <description><![CDATA[<p>Cela vous est-il déjà arrivé d'imaginer ce qu'il se passerait si vous plaquiez tout du jour au lendemain ? Avec pour objectif de partir vivre seul dans une nouvelle ville, ou bien même pour partir en pèlerinage sur le chemin de Saint-Jacques de Compostelle ?</p>
<p>Et bien si vous voulez une réponse, écoutez cet épisode. Camille Dubois-Leipp a torpillé sa vie du jour au lendemain, pour partir seule, pendant 40 jours, en pèlerinage.</p>
<p>Elle était la cadre dynamique parisienne parfaite, 30 ans, un gros poste, un bon salaire, des amis et du boulot par-dessus la tête.</p>
<p>Puis, tout s'effondre, le déclique, elle part, d'abord sur le chemin de Compostelle, puis elle plaque tout pour s'installer à Annecy, sans argent et sans connaissances.</p>
<p>Aujourd’hui, elle se lance dans l'entrepreneuriat, avec un projet sportif Outtrip.</p>
<p>Un épisode dans lequel on parle de sport, de travail, de spiritualité, de notre rapport à la vie. Bref, un épisode passionnant, que je vous conseille vivement.</p>
<p>N'oubliez pas de vous abonner, c'est super important, et partagez de force ce podcast à vos proches !</p>
<p>Venez me suivre sur instagram @thebatoux et @anecdotes_podcast, ainsi que sur LinkedIn.</p>
<p>À la semaine prochaine !</p>]]></description>
                <content:encoded><![CDATA[<p>Cela vous est-il déjà arrivé d'imaginer ce qu'il se passerait si vous plaquiez tout du jour au lendemain ? Avec pour objectif de partir vivre seul dans une nouvelle ville, ou bien même pour partir en pèlerinage sur le chemin de Saint-Jacques de Compostelle ?</p>
<p>Et bien si vous voulez une réponse, écoutez cet épisode. Camille Dubois-Leipp a torpillé sa vie du jour au lendemain, pour partir seule, pendant 40 jours, en pèlerinage.</p>
<p>Elle était la cadre dynamique parisienne parfaite, 30 ans, un gros poste, un bon salaire, des amis et du boulot par-dessus la tête.</p>
<p>Puis, tout s'effondre, le déclique, elle part, d'abord sur le chemin de Compostelle, puis elle plaque tout pour s'installer à Annecy, sans argent et sans connaissances.</p>
<p>Aujourd’hui, elle se lance dans l'entrepreneuriat, avec un projet sportif Outtrip.</p>
<p>Un épisode dans lequel on parle de sport, de travail, de spiritualité, de notre rapport à la vie. Bref, un épisode passionnant, que je vous conseille vivement.</p>
<p>N'oubliez pas de vous abonner, c'est super important, et partagez de force ce podcast à vos proches !</p>
<p>Venez me suivre sur instagram @thebatoux et @anecdotes_podcast, ainsi que sur LinkedIn.</p>
<p>À la semaine prochaine !</p>]]></content:encoded>
                <pubDate>Sun, 25 Apr 2021 08:00:00 +0000</pubDate>
                <enclosure url="https://audio.ausha.co/yEXw1UR2qKmV.mp3?t=1619332909" length="81096723" type="audio/mpeg"/>
                                    <link>https://podcast.ausha.co/anecdotes/18-j-ai-tout-plaque-du-jour-au-lendemain-pour-partir-seule-j-ai-torpille-ma-vie-camille-dubois-leipp-fondatrice-de</link>

                                <itunes:author>Baptiste Piocelle</itunes:author>
                <itunes:explicit>no</itunes:explicit>
                                    <itunes:keywords>podcast,France,paris,anecdotes,vie,entrepreneuriat,entrepreneur,coach,Rouen,start-up,français,célébrités</itunes:keywords>
                                <itunes:duration>1:24:28</itunes:duration>
                <itunes:episodeType>full</itunes:episodeType>
                                    <itunes:season>1</itunes:season>
                                            <itunes:episode>16</itunes:episode>
                                                    <itunes:block>no</itunes:block>
                <itunes:subtitle>Cela vous est-il déjà arrivé d'imaginer ce qu'il se passerait si vous plaquiez tout du jour au lendemain ? Avec pour objectif de partir vivre seul dans une nouvelle ville, ou bien même pour partir en pèlerinage sur le chemin de Saint-Jacques de Compost...</itunes:subtitle>

                <googleplay:author>Baptiste Piocelle</googleplay:author>
                                <googleplay:explicit>no</googleplay:explicit>
                <googleplay:block>no</googleplay:block>

                                    <itunes:image href="https://image.ausha.co/RWtgTlFC7BbehBR0KAv5z7HnXXb32yCAFFCw7IbE_1400x1400.jpeg?t=1619332719"/>
                    <googleplay:image href="https://image.ausha.co/RWtgTlFC7BbehBR0KAv5z7HnXXb32yCAFFCw7IbE_1400x1400.jpeg?t=1619332719"/>

                            </item>
                    <item>

这是我用来解析的php

$url = "https://feed.ausha.co/bVn6ghlkLaaz";
$rss = simplexml_load_file($url);
echo '<pre>';
print_r($rss);
echo '</pre>';

"这里是印刷品给我的"

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [version] => 2.0
        )

    [channel] => SimpleXMLElement Object
        (
            [title] => "Anecdotes"
            [link] => https://podcast.ausha.co/anecdotes
            [description] => "Anecdotes" met en lumière des histoires insolites et incroyables, de personnalités connues, ou non, et dont on va pouvoir tirer ensemble, 3 leçons sur la vie, le travail ou l'entrepreneuriat. 
Bonjour, je suis Baptiste Piocelle, entrepreneur, co-fondateur de Canoa et podcasteur. Dans mon émission, vous découvrirez des histoires extraordinaires qui vous feront progresser dans vos objectifs de vie. Identifiez-vous facilement aux invités avec un panel très large de personnalités, de métiers et de caractères. Une émission sans langue de bois ni montage, la vérité à l'état pur. 
Écoutez des personnalités connues raconter des Anecdotes inédites sur leur vie, puis écoutez votre voisin parler de l'histoire incroyable qui lui est arrivé, le choix est votre. 
N'hésitez pas à aimer, noter, partager et commenter le podcast. Si vous le partagez à 3 personnes autour de vous, ensemble, nous atteindrons des sommets. 
Merci et bonne écoute !
Amicalement vôtre, 

Baptiste Piocelle
            [language] => fr
            [copyright] => Baptiste Piocelle
            [lastBuildDate] => Sun, 25 Apr 2021 08:01:04 +0000
            [pubDate] => Sun, 25 Apr 2021 08:01:04 +0000
            [webMaster] => feeds@ausha.co (Ausha)
            [generator] => Ausha (https://www.ausha.co)
            [category] => Business
            [image] => SimpleXMLElement Object
                (
                    [url] => https://image.ausha.co/XhB165o4xydsexMnRaeWnChVEQyzCCCHesge5RBF_1400x1400.jpeg?t=1606905283
                    [title] => "Anecdotes"
                    [link] => https://podcast.ausha.co/anecdotes
                )

            [item] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [title] => #18 "J'ai tout plaqué du jour au lendemain pour partir seule, j'ai torpillé ma vie." Camille Dubois-Leipp, fondatrice de Outtrip.
                            [guid] => 049ecaaadeaca289eb4975b02eee9edb1b8c4792
                            [description] => SimpleXMLElement Object
                                (
                                )

                            [pubDate] => Sun, 25 Apr 2021 08:00:00 +0000
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => https://audio.ausha.co/yEXw1UR2qKmV.mp3?t=1619332909
                                            [length] => 81096723
                                            [type] => audio/mpeg
                                        )

                                )

                            [link] => https://podcast.ausha.co/anecdotes/18-j-ai-tout-plaque-du-jour-au-lendemain-pour-partir-seule-j-ai-torpille-ma-vie-camille-dubois-leipp-fondatrice-de
                        )

                    [1] => SimpleXMLElement Object

它不会解析/显示任何“iTunes:Something”标签。任何人都会知道它为什么不解析,以及我可以使用什么解决方案。

我尝试了这个,但得到了php致命错误

$xml = new SimpleXMLElement($r);
$xml->registerXPathNamespace('i', 'https://feed.ausha.co/bVn6ghlkLaaz');

foreach($xml->xpath('//i:author') as $itunes) {
    $itunes->registerXPathNamespace('i', 'https://feed.ausha.co/bVn6ghlkLaaz');
    var_export($itunes->xpath('//i:author'));
}

Fatal error: Uncaught Exception: String could not be parsed as XML in C:\xampp\htdocs\anecdotes\wp-content\themes\anecdoteschild\template-home.php:88 Stack trace: 

# 0 C:\xampp\htdocs\anecdotes\wp-content\themes\anecdoteschild\template-home.php(88): SimpleXMLElement->__construct('')

# 1 C:\xampp\htdocs\anecdotes\wp-includes\template-loader.php(106): include('C:\\xampp\\htdocs...')

# 2 C:\xampp\htdocs\anecdotes\wp-blog-header.php(19): require_once('C:\\xampp\\htdocs...')

# 3 C:\xampp\htdocs\anecdotes\index.php(17): require('C:\\xampp\\htdocs...')

# 4 {main} thrown in C:\xampp\htdocs\anecdotes\wp-content\themes\anecdoteschild\template-home.php on line 88
mcvgt66p

mcvgt66p1#

请仔细阅读错误消息:在第一行,它说“字符串不能被解析为XML”;然后在第二行的末尾,它显示您已经运行了SimpleXMLElement->__construct('')
所以这个错误来自$xml = new SimpleXMLElement($r);行,因为$r不包含任何内容。
你好像把两件事搞混了:

  • 您尝试从中提取XML的统一资源定位符(URL),即“https://feed.ausha.co/bVn6ghlkLaaz“
  • 统一资源标识符(URI),用于标识XML * 内部 * 您感兴趣的不同名称空间,即“http://www.itunes.com/dtds/podcast-1.0.dtd“

返回到加载XML的代码的第一个版本,该版本工作正常:

$url = "https://feed.ausha.co/bVn6ghlkLaaz";
$rss = simplexml_load_file($url);

然后,使用XPath获取所需的元素:

$xml->registerXPathNamespace('i', "http://www.itunes.com/dtds/podcast-1.0.dtd");

foreach($xml->xpath('//i:author') as $author) {
    echo $author;
}

或者使用->children()转到显式需要的元素,如Reference - How do I handle namespaces (Tags and Attributes with a Colon in) in SimpleXML?中所述

echo $xml->channel->children("http://www.itunes.com/dtds/podcast-1.0.dtd")->author;
7cjasjjr

7cjasjjr2#

this answer的基础上,我可以循环遍历itunes命名空间元素,并添加它们,以便通过simplexml加载它们。

$xml = simplexml_load_file( feed_url );

        // Loop through the items
        foreach ( $xml->channel->item as $item ) {

            // Grab all of the itunes children
            $itunes_children = $item->children( 'http://www.itunes.com/dtds/podcast-1.0.dtd' );

            // Loop through the itunes children elements and add to the item.
            foreach ( $itunes_children as $name => $value ) {
                $item->addChild( 'itunes_' . $name, htmlspecialchars( $value ) );
            }
        }

        echo '<pre>';
        print_r( $xml );
        echo '</pre>';

相关问题