これは簡単な質問のようですが申し訳ありませんが、私はこれで髪を引っ張り始めました...
次のような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";
}
最初の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']);
(ファイルを作成する代わりに、XMLを文字列に貼り付けたのでsimplexml_load_string
を使用しました。あなたの場合、simplexml_load_file
で行っていることは問題ありません!)
あなたを取得します
string '90' (length=2)
SimpleXMLでは、配列構文で属性にアクセスします。
そして、値を取得するには文字列にキャストする必要があり、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] => [email protected]
[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の単一配列にしたいです