19

我正在阅读的 XML 如下所示:

<show id="8511">

    <name>The Big Bang Theory</name>
    <link>http://www.tvrage.com/The_Big_Bang_Theory</link>
    <started>2007-09-24</started>
    <country>USA</country>

    <latestepisode>
        <number>05x23</number>
        <title>The Launch Acceleration</title>
    </latestepisode>

</show>

要获得(例如)最新一集的编号,我会这样做:

$ep = $xml->latestepisode[0]->number;

这工作得很好。但是我该怎么做才能从中获取ID <show id="8511">

我试过类似的东西:

$id = $xml->show;
$id = $xml->show[0];

但没有一个奏效。

更新

我的代码片段:

$url    = "http://services.tvrage.com/feeds/episodeinfo.php?show=".$showName;
$result = file_get_contents($url);
$xml = new SimpleXMLElement($result);

//still doesnt work
$id = $xml->show->attributes()->id;

$ep = $xml->latestepisode[0]->number;

echo ($id);

奥利。XML:

http://services.tvrage.com/feeds/episodeinfo.php?show=The.Big.Bang.Theory
4

7 回答 7

33

这应该有效。

$id = $xml["id"];

您的 XML 根成为 SimpleXML 对象的根;您的代码正在调用名为“show”的 chid 根,但该名称不存在。

您还可以将此链接用于一些教程: http: //php.net/manual/en/simplexml.examples-basic.php

于 2012-05-10T15:54:50.257 回答
12

你需要使用属性

我相信这应该有效

$id = $xml->show->attributes()->id;
于 2012-05-10T15:50:12.160 回答
9

这应该有效。您需要使用带类型的属性(如果 sting 值使用(字符串))

$id = (string) $xml->show->attributes()->id;
var_dump($id);

或这个:

$id = strip_tags($xml->show->attributes()->id);
var_dump($id);
于 2013-10-10T07:43:37.627 回答
7

你需要用来attributes()获取属性。

$id = $xml->show->attributes()->id;

你也可以这样做:

$attr = $xml->show->attributes();
$id = $attr['id'];

或者你可以试试这个:

$id = $xml->show['id'];

查看对您的问题的编辑(<show>是您的根元素),试试这个:

$id = $xml->attributes()->id;

或者

$attr = $xml->attributes();
$id = $attr['id'];

或者

$id = $xml['id'];
于 2012-05-10T15:51:26.047 回答
3

试试这个

$id = (int)$xml->show->attributes()->id;
于 2014-03-12T09:20:11.657 回答
0

您需要XML正确格式化您的格式并让它具有示例使用<root></root><document></document>任何内容.. 请参阅http://php.net/manual/en/function.simplexml-load-string.php上的 XML 规范和示例

$xml = '<?xml version="1.0" ?> 
<root>
<show id="8511">
    <name>The Big Bang Theory</name>
    <link>http://www.tvrage.com/The_Big_Bang_Theory</link>
    <started>2007-09-24</started>
    <country>USA</country>

    <latestepisode>
        <number>05x23</number>
        <title>The Launch Acceleration</title>
    </latestepisode>

</show>
</root>';

$xml = simplexml_load_string ( $xml );
var_dump ($xml->show->attributes ()->id);
于 2012-05-10T15:54:54.077 回答
0

使用 SimpleXML objecto 正确加载 xml 文件后,您可以执行以下操作print_r($xml_variable),您可以轻松找到可以访问的属性。正如其他用户所说$xml['id'],也为我工作。

于 2012-05-10T16:10:17.037 回答