web-dev-qa-db-ja.com

PHP SimpleXML +属性の取得

私が読んでいる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;

これはうまく機能します。しかし、<show id="8511">からIDを取得するにはどうすればよいですか?

私は次のようなものを試しました:

$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
18
r0skar

これは動作するはずです。

$id = $xml["id"];

XMLルートがSimpleXMLオブジェクトのルートになります。あなたのコードは存在しない 'show'という名前でchid rootを呼び出しています。

いくつかのチュートリアルでこのリンクを使用することもできます。 http://php.net/manual/en/simplexml.examples-basic.php

31

attributes を使用する必要があります

これはうまくいくと思う

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

これは動作するはずです。タイプの属性を使用する必要があります(スティング値が使用する場合(文字列))

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

またはこれ:

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

attributes() を使用して属性を取得する必要があります。

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

これを行うこともできます:

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

または、これを試すことができます:

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

質問の編集(<show>はルート要素です)、これを試してください:

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

OR

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

OR

$id = $xml['id'];
7
Rocket Hazmat

これを試して

$id = (int)$xml->show->attributes()->id;
3
user3266090

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);
0
Baba

SimpleXMLオブジェクトを使用してxmlファイルを正しくロードしたら、print_r($xml_variable)を実行でき、アクセスできる属性を簡単に見つけることができます。他のユーザーが言ったように$xml['id']も私のために働いた。

0
aguante