-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 ( )

如何从上面得到SidXMl

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;

(回声自动投射)。或明确:

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

你的方法:要按照你想要的方式去做,我认为你必须在你的调用中更进一步,因为 SimpleXMLObject 是另一个 SimpleXMLObject 的父级。例如$xml->SMSMessage->Sid;。我一般推荐使用带有 XML 的 xpath,因为在大多数情况下,您希望直接跳转到特定节点而不是遍历整个 XML 树。例如, this:$xml->xpath('//[node]')比 . 快$xml->tier1->tier2->tier3->etc

首选方法:假设$xml代表您发布的 SimpleXMLObject,您可以像这样访问 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 回答