XML解析

WBOY
WBOYオリジナル
2016-06-23 14:19:51969ブラウズ

array(2) {
["header"]=>
string(267) "HTTP/1.1 200 OK
サーバー: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=BDED717E8585DDA55A47EA1822C00E80; Path=/sdkproxy/; Ht tpのみ
Content-Type: text/html;charset=UTF-8
Content-Language: en-GB
Content-Length: 103
Date: Sat, 24 Aug 2013 02:38:00 GMT
接続: close"
[" body"]=>
string(103) "
52b189f45abba88b2989c5c1f30b7a3428fd9563ce99120143e7b3cb584755f8bbbcc7d749ec7f3e0fb2ba5af34b74a704c8d80f29f204b22c4490983d39ebac7761b5f615852937c78510c6ee32be47a- 1100.0dc97c94abba54b3574a1f2a9fcb1679b5926afb69347ced47e61d1fa57648b84"
}
は Web サーバーの戻り値です


simplexml_load_string を使用して解析し、false を返します。驚きました

['body'] の内容がどのように変換されるか配列形式に変換します


ディスカッションへの返信 (解決策)

$xml_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><response><error>0</error><message>-1100.0</message></response>";  $xml = simplexml_load_string($xml_string);  //对象转换成数组,方便引用  $arr = (array)$xml; var_dump($arr);

$ar = simplexml_load_string($data['body'])

;私はまだそれほど上手ではありません この低レベルの間違いをしてください

あなたがどのような高レベルの間違いを犯すかわかりません

$s = '<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>';$xml = simplexml_load_string($s);print_r($xml);
SimpleXMLElement オブジェクト

(

[エラー] => 0
[メッセージ] => - 1100.0
)


どのような高レベルの間違いを犯すかわかりません 高度なエラー

$s = '<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>';$xml = simplexml_load_string($s);print_r($xml);
SimpleXMLElement オブジェクト

(

[エラー] => 0
[メッセージ] => -1100.0
)

問題ここで bool(false) を返すということです

受け取ったデータのシリアル化された値を投稿します

たとえば、受け入れたデータが $data にある場合、

echo Serialize($data);
結果を投稿します

を投稿します受信したデータのシリアル化された値

たとえば、受け入れたデータが $data にある場合、

echoserialize($data)
結果を投稿します


a:2:{s:6:"header";s :267:"HTTP/1.1 200 OK
サーバー: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnly
Content-Type: text/html;charset=UTF-8
コンテンツ-言語: en-GB
Content-Length: 103
日付: Sat, 24 Aug 2013 03:22 :14 GMT
接続: close";s:4:"body";s:103:"
d1b723b1d56d15ff64eac07f2c39278728fd9563ce99120143e7b3cb584755f8bbbcc7d749ec7f3e0fb2ba5af34b74a7 04c8d80f29f204b22c4490983d39ebac7761b5f615852937c78510c6ee32be47a-1100.0dc97c94abba54b3574a1f2a9fcb1679b5926afb69347ced47e61d1fa57648b84";}

データの問題です

$s = 'a:2:{s:6:"header";s:267:"HTTP/1.1 200 OKServer: Apache-Coyote/1.1Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnlyContent-Type: text/html;charset=UTF-8Content-Language: en-GBContent-Length: 103Date: Sat, 24 Aug 2013 03:22:14 GMTConnection: close";s:4:"body";s:103:"<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>";}';$d = unserialize($s);$xml = simplexml_load_string(trim($d['body']));print_r($xml);
SimpleXMLElement Object

(

[error] => 0
[message] => -1100.0
)
データを取得したときに、きれいに切り取られていませんでした。
http データヘッダーとデータ本体の間に「rnrn」があり、それを「rn」でカットします
したがって、データ本体の前に「rn」が残っていると、分析が失敗します

$s = 'a:2:{s:6:"header";s:267:"HTTP/1.1 200 OKServer: Apache-Coyote/1.1Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnlyContent-Type: text/html;charset=UTF-8Content-Language: en-GBContent-Length: 103Date: Sat, 24 Aug 2013 03:22:14 GMTConnection: close";s:4:"body";s:103:"<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>";}';$d = unserialize($s);$xml = simplexml_load_string(trim($d['body']));print_r($xml);
SimpleXMLElement オブジェクト

(

[エラー] => 0
[メッセージ] => -1100.0 )
データを取得したときに、きれいにカットされませんでした。
http データヘッダーとデータ本体の間に "rnrn" があり、それを "rn" で切り取っています
つまり、データ本体の前にある "rn" が原因で分析が失敗します

これがまさに理由です、丁寧なご回答ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。