从SimpleXML访问子节点的内容

时间:2012-01-30 17:09:18

标签: php xml simplexml

我无法访问SimpleXML内容的子节点。我尝试了一些变体,例如$xmlData->id$xmlData['id']

我对这个领域有些新意,所以非常感谢任何帮助。

代码示例:

    $xmlData = simplexml_load_string($string);
    $person = $xmlData->documentElement;
    $id = $xmlData->id;

来自Simple XML的$xmlData的Var转储:

object(SimpleXMLElement)#23 (10) { 
     ["id"]=> string(10) "yTZn1JIaaa" 
     ["first-name"]=> string(6) "First Name" 
     ["last-name"]=> string(6) "Last Name"...

1 个答案:

答案 0 :(得分:1)

我尝试重建您的代码段:

<?php
$string = "<person><id>1</id><firstname>Foo</firstname><lastname>Bar</lastname></person>";
$xmlData = simplexml_load_string($string);
echo $xmlData->id . " - " . $xmlData->firstname . " - " . $xmlData->lastname;
?>

这对我来说很好 - 输出是:

1 - Foo - Bar

你可以看到,我的名字和姓氏标记名与你的不同 - 破折号有时会引起麻烦。如果您需要破折号,请改为使用:

echo $xmlData->id . " - " . $xmlData->{'first-name'} . " - " . $xmlData->{'last-name'};

无论如何,id工作得很好......所以也许你有另一个错误阻止你的脚本正常运行?如果您可以发布XML-String,那么它可能会有所帮助。

干杯, 最大

P.S。:你为什么要执行这条线?

$person = $xmlData->documentElement;