0

RESTを使用してWebサービスを構築しています。クライアントがリクエストを送信すると、サーバーは次のような XML 文字列としてレスポンスを返します。

    <?xml version="1.0" encoding="utf-8"?>
    <xml>
      <item>
        <user>1</user>
         <name>cym</name>
       <house_number>23423423</house_number>
      <house_number_addition>sfsfsdf</house_number_addition>  
      <zipcode>erwer</zipcode>
      <city>werwer</city>
      <street>ertyu</street>
      <state_name>state1</state_name>
      <countryName>Albania</countryName>
      </item>
      </xml>

このような PHP 配列として XML 応答を解析するにはどうすればよいですか?

     $arr['list']=array(name=>'abc',age=>'23',gender=>'male');

また

     $arr=array(name=>'abc',age=>'23',gender=>'male');

これが不可能な場合、どうすれば属性の値を取得できますか。simplexml_load_string を使用してこれを試しましたが、null が返されます。これはそのための私のコードです

  $response= $ex->getResponse();
  $xmldat=simplexml_load_string($response);
  $i= $xmldat->name;
4

3 に答える 3

0

それを行うには多くの方法があります

配列に変換します

$xml = json_decode(json_encode((array) $xmldat), 1);
echo $xml['item']['name']; // according to your XML, u should use `item` first then the element

また

$response= $ex->getResponse();
$xmldat=simplexml_load_string($response);
$i= $xmldat->item->name;
于 2012-11-20T01:40:49.180 に答える
0

XML は検証されていません。次の作品は、そこから構築できるはずです。

$xmldat = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<xml>
<item>
<user>1</user>
<name>cym</name>
<house_number>23423423</house_number>
<house_number_addition>sfsfsdf</house_number_addition>  
<zipcode>erwer</zipcode>
<city>werwer</city>
<street>ertyu</street>
<state_name>state1</state_name>
<countryName>Albania</countryName>
</item>
</xml>
XML;
$xml = simplexml_load_string($xmldat);
print_r($xml);
echo $xml->item->name; 
于 2012-11-20T01:43:40.257 に答える
0

SimpleXML を使用すると、XML をオブジェクトとして操作できますが、ルート要素 (この場合は ) から始まるが含まれない各世代を指定する必要があります<xml/>

試す:

$i = $xmldat->list->name;

これは SimpleXMLElement 型のオブジェクトを返しますが、必要に応じて簡単に文字列にキャストできます。

于 2012-11-20T01:38:25.567 に答える