0

私の PHP コードには、いくつかの文字列を連結して XML リクエストを作成する単純な連結があります。何らかの理由で、customerId を文字列チェーンと連結すると、解析されません。しかし、一重引用符で囲まれた定数を渡すと、解析されます。ここに例があります。

次のように、定数と連結すると、次のようになります。

$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.'2985634';
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

$out をエコーすると、次のようになります。

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber>2985634</customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

ただし、定数の代わりに変数を渡すと (これは from から POST メソッドで渡したものです)、以下に示すように解析されません。

$custId = $_POST['customerId'];
$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.$custId;
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

echo の出力は次のようになります。

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber></customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

変数を連結して文字列化するさまざまな方法を試しましたが、うまくいきませんでした:(

4

3 に答える 3

1

あなたのコードは問題なく動作しています。このコードのブラウザでの結果は次のとおりです。

<?php
    $_POST['id']=2985634;
    $out='<?xml version="1.0"?>';
    $out=$out.'<soapenv:Envelope ';
    $out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
    $out=$out.'xmlns:v1="http://www.test.com/v1">';
    $out=$out.'<soapenv:Header/>';
    $out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
    $out=$out.$_POST['id'];
    $out=$out.'</customerNumber></v1:loadData>';
    $out=$out.'</soapenv:Body>';
    $out=$out.'</soapenv:Envelope>';
    echo $out;
?>

ここに画像の説明を入力

于 2013-08-28T02:58:02.760 に答える
0

XML 出力をエコーし​​た後、ブラウザーで表示するだけでなく、ビュー ソースを使用して出力結果を確認します。

于 2013-08-28T03:03:57.363 に答える
-1

文字列として定義$custIdします。

$custId = '2985634';

また、を使用する代わりに、使用して$out=$out.'string';みてください$out .= 'string';

于 2013-08-28T02:36:27.830 に答える