Извините, если это похоже на простой вопрос, но я начал вытягивать волосы на этом …
У меня есть 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