我在访问SimpleXML对象的@attribute
部分时遇到问题。当我var_dump
整个对象时,我得到正确的输出,当我var_dump
对象的其余部分(嵌套标签)时,我得到正确的输出,但是当我按照文档和{ {1}} var_dump
,我得到一个空对象,尽管第一个$xml->OFFICE->{'@attributes'}
清楚地表明存在要输出的属性。
任何人都知道我在这里做错了什么/我如何才能做到这一点?
答案 0 :(得分:118)
试试这个
$xml->attributes()->Token
答案 1 :(得分:80)
您可以通过调用XML节点上的attributes()函数来获取XML元素的属性。然后你可以var_dump函数的返回值。
更多信息,请访问php.net http://php.net/simplexmlelement.attributes
该页面的示例代码:
$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
答案 2 :(得分:44)
我曾多次使用@attributes
获得如下所示,而且时间稍长。
$att = $xml->attributes();
echo $att['field'];
它应该更容易,您只能一次获得格式化的属性:
$xml['field'];
其他替代方案是:
$xml->attributes()->{'field'};
$xml->attributes()->field;
$xml->{"@attributes"}->field;
$xml->attributes('field');
$xml->attributes()['field'];
$xml->attributes->['field'];
答案 3 :(得分:37)
$xml = <<<XML
<root>
<elem attrib="value" />
</root>
XML;
$sxml = simplexml_load_string($xml);
$attrs = $sxml->elem->attributes();
echo $attrs["attrib"]; //or just $sxml->elem["attrib"]
使用SimpleXMLElement::attributes
。
事实是,SimpleXMLElement get_properties
处理程序非常重要。没有名为“@attributes”的属性,因此您无法执行$sxml->elem->{"@attributes"}["attrib"]
。
答案 4 :(得分:14)
你可以这样做:
echo $xml['token'];
答案 5 :(得分:7)
如果您正在寻找这些属性的列表,XPath将成为您的朋友
print_r($xml->xpath('@token'));
答案 6 :(得分:2)
不幸的是我有一个PHP 5.5的独特版本(暂时停留在Gentoo上),我发现的是那个
$xml->tagName['attribute']
是唯一有效的解决方案。我尝试了上面所有的Bora方法,包括&#39; Right&amp; amp;快速&#39;格式,它们都失败了。
事实上,这是最简单的格式是一个优点,但并不认为我疯狂尝试其他人所说的所有格式。
Njoy的价值(我提到了独特的构建吗?)。
答案 7 :(得分:1)
它帮助我将simplexml_load_file($ file)的结果转换为JSON结构并将其解码回来:
$xml = simplexml_load_file("$token.xml");
$json = json_encode($xml);
$xml_fixed = json_decode($json);
$try1 = $xml->structure->{"@attributes"}['value'];
print_r($try1);
>> result: SimpleXMLElement Object
(
)
$try2 = $xml_fixed->structure->{"@attributes"}['value'];
print_r($try2);
>> result: stdClass Object
(
[key] => value
)