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 ( )
如何从上面的XMl
答案 0 :(得分: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;
尝试一下,你可能会遗漏一些父节点或其他东西。
答案 1 :(得分:0)
你的方法:要按照你想要的方式去做,我认为你必须更进一步调用,因为SimpleXMLObject是另一个SimpleXMLObject的父级。例如。 $xml->SMSMessage->Sid;
。我通常建议在XML中使用xpath,因为在大多数情况下,您希望直接跳转到特定节点而不是遍历整个XML树。例如,$xml->xpath('//[node]')
比$xml->tier1->tier2->tier3->etc
快。
首选方法:假设$xml
代表您发布的SimpleXMLObject,您可以像这样访问Sid:$xml->xpath('//Sid');
。这应该直接跳到树中的“Sid”节点。
答案 2 :(得分:0)
在simplexml
中,你总是需要施展你的价值观 - 所以你必须这样做:
echo $xml->Sid;
(echo自动投射)。或者明确地说:
$string = (string) $xml->id;
答案 3 :(得分:-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);