現在、Google連絡先APIから情報を取得しようとしています。ライブラリで提供されているサンプル コードの使用:
$response = json_encode(simplexml_load_string($val->getResponseBody()));
$result = json_decode($response, true);
関数はsimplexml_load_string
名前空間を取得しません。php.net を見て、パラメータを追加する方法を見て、少し迷っています。
$xml = json_encode(simplexml_load_string(null, $val->getResponseBody(), null, 'gd', true));
xml 文字列から「gd」名前空間を取得しようとすると、エラーが発生します。これを手伝ってくれる人はいますか?
出力エラーは次のとおりです。
simplexml_load_string() は、パラメーター 2 が SimpleXMLElement から派生したクラス名であることを想定しています
しかし、このエラーに加えて、必要な情報も正しく出力されます...混乱しています。
プルする必要がある情報の例:
<gd:extendedProperty xmlns:gs='http://schemas.google_apps_sync.com' name='google_apps_sync'>
<gs:em_odn1>awalker@xxxxx.com</gs:em_odn1>
<gs:em_dn1>First Name Last Name</gs:em_dn1>
<gs:em_ad1>awalker@xxxxxxxxx.com</gs:em_ad1>
<gs:em_t1>SMTP</gs:em_t1>
<gs:f_c>32791</gs:f_c>
<gs:f>Last, First</gs:f>
</gd:extendedProperty>
編集
$xmlResponse = simplexml_load_string($val->getResponseBody(), null, 0, 'gd', true);
$xmlResponse->registerXPATHNamespace('gd', 'http://schemas.google_apps_sync.com');
$xmlResponse->registerXPATHNamespace('gs', 'http://schemas.google_apps_sync.com/contact/2008');
上記のコードにより、必要な名前空間にアクセスできますが、一度に 1 つだけです....たとえば:
$email = json_encode($xmlResponse->xpath('//gd:email'), true));
$postal = json_encode($xmlResponse->xpath('//gd:postalAddress'), true);
$name = json_encode($xmlResponse->xpath('//gs:em_dn1'), true);
$xmlResponse
これらの変数を印刷すると、必要なそれぞれの情報が得られますが、必要な名前空間を開始した後に元の変数にアクセスする方法はありませんか?
元:
json_decode($xmlResponse, true);
定義した名前空間の xml 情報を教えてくれません。