【问题标题】:parsing xml tags with itunes:something from url用itunes解析xml标签:来自url的东西
【发布时间】:2021-04-28 13:32:12
【问题描述】:

我正在努力使用 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>';

这里是 print_r 给我的内容

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

【问题讨论】:

  • 这能回答你的问题吗? Parse XML with Namespace using SimpleXML
  • 我尝试了两个答案,到目前为止都没有奏效。我更新了我的消息并分享了我所做的,也许我做错了什么?
  • $xml-&gt;registerXPathNamespace('i', 'https://feed.ausha.co/bVn6ghlkLaaz'); - 这是您从中请求数据的 URL,它不是命名空间 URI 之一。

标签: php xml xml-parsing simplexml


【解决方案1】:

仔细阅读错误信息:在第一行,它说“无法将字符串解析为 XML”;然后在第二行的末尾,它显示你已经运行了SimpleXMLElement-&gt;__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;
}

或使用-&gt;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;

【讨论】:

  • 嗨@IMSoP,非常感谢您的回复,这对您有很大帮助。事实上,我对用于标识不同名称空间的 url 甚至与文档(我的意思是你与所有解释的链接,这是非常棒的 imo 的链接)在理论上解释了它是如何工作的,我仍然不明白你是如何工作的发现“itunes.com/dtds/podcast-1.0.dtd”。我还有另一个问题,例如标签 。如果我理解得很好,我应该对这一特定的属性使用属性方法吗?
  • @LeDude 在 XML 的顶部,您可以看到:xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"。这意味着“从现在开始,前缀 'itunes:' 意味着命名空间 'itunes.com/dtds/podcast-1.0.dtd'”。所以当你看到像&lt;itunes:author&gt; 这样的标签时,你可以回头查看xmlns 属性并找到那个命名空间。是的,没有任何前缀的属性必须像-&gt;attributes()-&gt;href一样访问。
  • 好的,经过一番尝试,我终于可以得到 的 href,我就是这样做的:$image = $xml-&gt;xpath('//i:image')[1]['href']; 。再次阅读后,URLs 在 xml 中,在开头。再次感谢 IMSoP!
猜你喜欢
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2013-11-19
  • 2014-02-07
  • 2012-02-10
  • 2015-06-17
  • 2015-04-28
相关资源
最近更新 更多