首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取冒号标记值XML

读取冒号标记值XML
EN

Stack Overflow用户
提问于 2016-10-17 23:26:27
回答 2查看 316关注 0票数 2

我已经读过这些主题:PHP library for parsing XML with a colons in tag names?Simple XML - Dealing With Colons In Nodes,但我建议实现这些解决方案。

代码语言:javascript
复制
<item>
<title> TITLE </title>
<itunes:author> AUTHOR </itunes:author>
<description> TEST </description>
<itunes:subtitle> TEST </itunes:subtitle>
<itunes:summary> TEST </itunes:summary>
<itunes:image href="yoyoyoyo.jpg"/>
<pubDate> YESTERDAY </pubDate>
<itunes:block>no</itunes:block>
<itunes:explicit>no</itunes:explicit>
<itunes:duration>99:99:99</itunes:duration>
<itunes:keywords>key, words</itunes:keywords>
</item>

我只想得到itunes:工期和itunes:图像。这是我的代码:

代码语言:javascript
复制
$result = simplexml_load_file("http://blablabla.com/feed.xml");

$items = $result->xpath("//item");

foreach ($items as $item) {

    echo $item->title;
    echo $item->pubDate;
}

我尝试使用children()方法,但是当我尝试使用print_r时,它说节点不再存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-17 23:48:50

您应该使用children()上的$item元素来获取它的子元素:

代码语言:javascript
复制
$str =<<< END
<item>
<title> TITLE </title>
<itunes:author> AUTHOR </itunes:author>
<description> TEST </description>
<itunes:subtitle> TEST </itunes:subtitle>
<itunes:summary> TEST </itunes:summary>
<itunes:image href="yoyoyoyo.jpg"/>
<pubDate> YESTERDAY </pubDate>
<itunes:block>no</itunes:block>
<itunes:explicit>no</itunes:explicit>
<itunes:duration>99:99:99</itunes:duration>
<itunes:keywords>key, words</itunes:keywords>
</item>
END;

$result = @simplexml_load_string($str);

$items = $result->xpath("//item");

foreach ($items as $item) {
    echo $item->title . "\n";
    echo $item->pubDate . "\n";
    echo $item->children()->{'itunes:duration'} . "\n";
}

输出:

代码语言:javascript
复制
TITLE
YESTERDAY
99:99:99
票数 2
EN

Stack Overflow用户

发布于 2016-10-18 02:42:18

这是我的另一个解决方案,如果迪克尔不为某人工作的话。

使用方法getNamespaces

代码语言:javascript
复制
$result = simplexml_load_file("http://blablabla.com/feed.xml");

$items = $result->xpath("//item");

foreach ($items as $item) 
{

    $itunesSpace = $item->getNameSpaces(true);
    $nodes = $item->children($itunesSpace['itunes']);

    //TEST
    echo $nodes->subtitle

    //99:99:99
    echo $nodes->duration

    //If you want the image Href

    $imageAux = $nodes->image->attributes();
    //yoyoyoyo.jpg
    echo $imageAux['href'];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40097200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档