XML解析

WBOY
リリース: 2016-06-23 14:19:51
オリジナル
984 人が閲覧しました

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) "
0- 1100.0"
}
は 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:"
0-1100.0";}

データの問題です

$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" が原因で分析が失敗します

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート