-1
SimpleXMLElement Object
(
    [SMSMessage] => SimpleXMLElement Object
        (
            [Sid] => xyz
            [DateUpdated] => 2013-05-02 18:43:19
            [DateCreated] => 2013-05-02 18:43:19
            [DateSent] => 1970-01-01 05:30:00
            [AccountSid] => xx
            [To] => 09011148771
            [From] => xx
            [Body] => Hello
            [BodyIndex] => SimpleXMLElement Object
                (
                )

            [Status] => sending
            [Direction] => outbound-api
            [Price] => SimpleXMLElement Object
                (
                )

            [ApiVersion] => SimpleXMLElement Object
                (
                )

            [Uri] => /v1/Accounts/xx/Sms/Messages/xyz
        )

)

私は試した:

$xml->Sid;

しかし、それは戻りますSimpleXMLElement Object ( )

私も試してみましたが$xml->title、これも同じものを返しましたSimpleXMLElement Object ( )

上記からSidを取得する方法XMl

4

4 に答える 4

1

私は少しいじっていて、あなたに似た構造を再作成しました:

$string='<?xml version="1.0"?>
<xml>
    <SMSMessage>
        <Sid>xyz</Sid>
        <DateUpdated>2013-05-02 18:43:19</DateUpdated>
    </SMSMessage>
</xml>';

$xml = new SimpleXMLElement($string);

print_r($xml);

これは以下を出力します:

SimpleXMLElement Object
(
    [SMSMessage] => SimpleXMLElement Object
    ( 
        [Sid] => xyz
        [DateUpdated] => 2013-05-02 18:43:19
    )
)

これはあなたのものと同じです。そして、次のようにして xyz を印刷できます。

echo $xml->SMSMessage->Sid;

試してみてください。親ノードまたは何かが欠落している可能性があります。

于 2013-05-02T13:38:28.760 に答える
0

常に値をキャストする必要があるため、simplexml次のようにする必要があります。

echo $xml->Sid;

(echo は自動的にキャストします)。または明示的に:

$string = (string) $xml->id;
于 2013-05-02T13:21:55.233 に答える
0

あなたの方法: SimpleXMLObject は別の SimpleXMLObject の親であるため、必要な方法でそれを行うには、呼び出しをさらに一歩進める必要があると思います。例$xml->SMSMessage->Sid;。通常、XML で xpath を使用することをお勧めします。ほとんどの場合、XML ツリー全体をトラバースするのではなく、特定のノードに直接ジャンプしたいからです。たとえば、これ$xml->xpath('//[node]')は よりも高速です$xml->tier1->tier2->tier3->etc

推奨される方法: が投稿した SimpleXMLObject を表していると仮定すると$xml、次のように Sid にアクセスできます$xml->xpath('//Sid');。これは、ツリーの「Sid」ノードに直接スキップする必要があります。

于 2013-05-02T13:16:55.340 に答える
-1

あなたが持っている場合:

$string='<?xml version="1.0"?>
<xml>
    <SMSMessage>
        <Sid>xyz</Sid>
        <DateUpdated>2013-05-02 18:43:19</DateUpdated>
    </SMSMessage>
</xml>';

$xml = new SimpleXMLElement($string);

print_r('<pre>');
$Sid = (array)($xml->SMSMessage->Sid);
print_r($Sid[0]);
print_r($xml);

次のように Sid にアクセスできます$Sid = (array)(xml->SMSMessage->Sid); echo $Sid[0]; が、配列を使用する場合は、次のようにすることができます。

$string='<?xml version="1.0"?>
<xml>
    <SMSMessage>
        <Sid>xyz</Sid>
        <DateUpdated>2013-05-02 18:43:19</DateUpdated>
    </SMSMessage>
</xml>';

$array= json_decode(json_encode(new SimpleXMLElement($string)), true);

print_r('<pre>');
print_r($array['SMSMessage']['Sid']);
print_r($array);
于 2013-05-02T16:13:40.330 に答える