19

これが簡単な質問のように思える場合は申し訳ありませんが、私はこれについて髪の毛を抜き始めました...

私はこのようなXMLファイルを持っています...

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

VarNumを取得しようとしています。

これまでのところ、次のコードを使用して他の情報を取得することに成功しています:

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

VarNum を取得できません (属性値だと思いますか?)

ありがとう!

4

4 に答える 4

24

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'];
于 2009-08-10T19:47:02.430 に答える
14

使用するのは$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ファイルを作成する代わりに、XMLを文字列に貼り付けたため、使用しました。simplexml_load_fileこの場合、使用していることは問題ありません!)

あなたを取得します

string '90' (length=2)

simpleXMLでは、配列構文を使用して属性にアクセスします。
そして、値を取得するには文字列にキャストする必要があります。SimpleXMLElement

たとえば、マニュアルの基本的な使用法の例5を参照してください:-)

于 2009-08-10T19:44:38.860 に答える
3
[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の単一配列にすべてのデータが必要です

于 2012-12-28T06:35:31.300 に答える