我有一个xml-object,如下所示:
<search typ="car" sub="all" out="test" epc="2" tsc="1" rcc="111" tpc="111" cur="DOL" itc="10">
或使用var_dump():
object(SimpleXMLElement)[1012]
public 'search' =>
object(SimpleXMLElement)[1078]
public '@attributes' =>
array (size=9)
'typ' => string 'car' (length=8)
'sub' => string 'all' (length=3)
'out' => string 'test' (length=11)
'epc' => string '2' (length=1)
'tsc' => string '1' (length=1)
'rcc' => string '111' (length=3)
'tpc' => string '111' (length=3)
'cur' => string 'DOL' (length=3)
'itc' => string '10' (length=2)
如何访问xml结的属性?
答案 0 :(得分:1)
只需使用->attributes
即可访问节点的属性。例如:
$xml = simplexml_load_string($xml_string); // or load_file
echo '<pre>';
print_r($xml->attributes());
独立:
// PHP 5.4 or greater (dereference)
echo $xml->attributes()['typ'];
答案 1 :(得分:1)
如the basic usage examples in the manual所示,访问属性的标准方法是使用数组访问($element['attributeName']
),例如
echo $search['typ'];
$typ = (string)$search['typ'];
请注意,该属性作为对象返回,因此您通常希望在将其存储到变量中时“强制转换”为字符串(或int等)。
要迭代所有属性,您可以使用the ->attributes()
method,例如
foreach ( $search->attributes() as $name => $value ) {
echo "$name: $value\n";
$some_hash[ $name ] = (string)$value;
}
如果您有XML名称空间,例如,还需要attributes()
方法。 `
$sx = simplexml_load_string(
'<foo xlmns:bar="http://example.com#SOME_XMLNS" bar:becue="yum" />'
);
echo $sx->attributes('http://example.com#SOME_XMLNS')->becue;
// Or, shorter but will break if the XML is generated with different prefixes
echo $sx->attributes('bar', true)->becue;