这是在典型的SimpleXMLElement对象上运行的print_r()
的输出:
SimpleXMLElement Object
(
[@attributes] => Array
(
)
)
@符号是什么意思?
答案 0 :(得分:12)
这是一个SimpleXMLElement对象。 '@attributes'行是XML元素中attributes的内部表示。使用SimpleXML的函数从这个对象获取数据,而不是直接与它进行交互。
答案 1 :(得分:9)
关于错误控制的所有答案都是错误的。 @并不代表任何。这就是内部调用属性的方式,但不依赖于此。在处理SimpleXML时,不要依赖print_r()
或var_dump()
。 SimpleXML执行了许多print_r()
和var_dump()
未正确表示的“神奇”事物。
如果你需要知道XML片段的“内部”,只需在其上使用->asXML()
。
答案 2 :(得分:1)
很抱歉,不能作为嘉宾发表评论,但对于像我一样在这里结束的其他人...我正在创建自己的Joomla表单字段,而Joomla创建了一个非常“有趣”的各种各样的对象。现在,我不想成为SimpleXML专家,我想要的只是原始标签文本,它在@attributes中被遗忘。
经过一点"hmmm, I wonder if this works?"™
后,我发现这是访问这些值的最简单方法:
var_dump($simpleXMLObject);
/* Result */
object(SimpleXMLElement)
public '@attributes' =>
array (size=3)
'name' => string 'awesome'
'label' => string 'Awesome Label'
'type' => string 'typeOfAwesome'
echo $simpleXMLObject->attributes()->label; // Awesome Label
$simpleXMLObject->attributes()->label = 'Different Day, Different Awesome';
echo $simpleXMLObject->attributes()->label; // Different Day, Different Awesome
他们没有撒谎。这很简单。
答案 3 :(得分:0)
我没有足够的代表对user3098738发表评论......但想要验证他的回复。它真的很简单。任何时候你在SimpleXML中运行@attributes ...使用
$simpleXMLObject->attributes()
$simpleXMLObject->key->attributes()
答案 4 :(得分:0)
我正在使用HTTP API,它只提供XML格式的数据。所以首先我将它加载到SimpleXML中,并且也被@attributes问题弄糊涂了......我如何获得它包含的宝贵数据? print_r()让我感到困惑。
我的解决方案是在0处创建数组和迭代器变量。使用foreach循环使用SimpleXML对象并使用attribues()方法获取数据将其加载到我创建的数组中。在foreach循环结束之前迭代。
所以print_r()来自于显示:
SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => 1
[First] => John
[Last] => Smith
)
)
更加可用的普通数组。这很好,因为我想要在需要时快速将数组转换为json的选项。
我的代码解决方案:
$obj = simplexml_load_string($apiXmlData);
$fugly = $obj->Deeply->Nested->XML->Data->Names;
$people = array();
$i = 0;
foreach($fugly as $val)
{
$people[$i]['id'] += $val->attributes()->ID;
$people[$i]['first'] = "". $val->attributes()->First;
$people[$i]['last'] = "". $val->attributes()->Last;
$i++;
}
快速说明PHP的settype()函数很奇怪/错误,所以我添加 + 以确保ID是整数并添加了引号以确保名称为 string 。如果没有某种变量转换,您将把SimpleXML对象加载到您创建的数组中。
print_r()的最终结果:
Array
(
[0] => Array
(
[id] => 1
[first] => John
[last] => Smith
)
[1] => Array
(
[id] => 2
[first] => Jane
[last] => Doe
)
)