Как получить значение атрибута из XML-файла в PHP?

Извините, если это похоже на простой вопрос, но я начал вытягивать волосы на этом …

У меня есть XML-файл, который выглядит так …

<VAR VarNum="90"> <option>1</option> </VAR> 

Я пытаюсь получить VarNum .

До сих пор мне удалось использовать следующий код, чтобы получить другую информацию:

 $xml=simplexml_load_file($file); $option=$xml->option; 

Я просто не могу получить VarNum (значение атрибута, которое я думаю?)

Благодаря!

Вы должны получить это, используя SimpleXMLElement :: attributes ()

Попробуй это:

 $xml=simplexml_load_file($file); foreach($xml->Var[0]->attributes() as $a => $b) { echo $a,'="',$b,"\"\n"; } 

Это покажет вам все атрибуты name / value для первого элемента foo . Это ассоциативный массив, поэтому вы также можете это сделать:

 $attr = $xml->Var[0]->attributes(); echo $attr['VarNum']; 

Как насчет использования $xml['VarNum'] ?

Как это :

 $str = <<<XML <VAR VarNum="90"> <option>1</option> </VAR> XML; $xml=simplexml_load_string($str); $option=$xml->option; var_dump((string)$xml['VarNum']); 

(Я использовал simplexml_load_string потому что я simplexml_load_string ваш XML в строку вместо создания файла, то, что вы делаете с simplexml_load_file , в порядке!)

Вы получите

 string '90' (length=2) 

С помощью simpleXML вы получаете доступ к атрибутам с синтаксисом массива.
И вам нужно SimpleXMLElement строку, чтобы получить значение, а не экземпляр SimpleXMLElement

Например, см. Пример № 5 основного использования в руководстве 🙂

 [0] => Array ( [@attributes] => Array ( [uri] => https://abcd.com:1234/abc/cst/2/ [id] => 2 ) [name] => Array ( [first] => abcd [last] => efg ) [company] => abc SOLUTION [email] => abc@xyz.com [homepage] => WWW.abcxyz.COM [phone_numbers] => Array ( [phone_number] => Array ( [0] => Array ( [main] => true [type] => work [list_order] => 1 [number] => +919876543210 ) [1] => Array ( [main] => false [type] => mobile [list_order] => 2 [number] => +919876543210 ) ) ) [photo] => Array ( [@attributes] => Array ( [uri] => https://abcd.com:1234/abc/cst/2/cust_photo/ ) ) ) 

Я применил приведенный ниже код

 $xml = simplexml_load_string($response); $json = json_encode($xml); $array = json_decode($json,TRUE); print_r($array); 

но он не используется полностью, я хочу, чтобы все данные в одном массиве в php