0

序文: この質問を投稿する前に、徹底的に検索して読みました。私と似たような質問をいくつか見ました。同じエラー メッセージが表示されるものもありましたが、ほとんどの質問には、「単一のルート要素が必要です」などの単純な回答がありました。ここでこれらのソリューションを適用できなかったため、投稿しています。

PHP と cURL を使用して .NET Web サービスを使用しています。そこでは、データを XML 形式で送信し、応答も XML 形式で受信します。正常に動作しており、.NET サービス側で適切な書き込みが確認されています。私が使用する場合:

$xml_obj = simplexml_load_string($result);
print $xml_obj->asXML()

応答 XML は次のようにブラウザに返されます。

ここに画像の説明を入力

その XML を解析して、潜在的なエラーや成功した応答で意味のあることを行えるようにしています。私はこの方法を使用しようとしています:

$xml = new SimpleXMLElement($xml_obj);
$is = $xml->xpath('*/i');

foreach($is as $i) {
    echo $i['title'], ': ', $i['description'], "\n";
}

これが最善のアプローチである場合とそうでない場合があります。これを実行すると、次のメッセージが表示されます。

ここに画像の説明を入力

問題が応答 XML にあるのか (エラー メッセージが示しているようですが、見つけることができません)、それとも XML を間違った方法で解析しようとしているのかは不明です。

ご協力ありがとうございました。

4

1 に答える 1

0

プレーン テキスト出力と XML 出力を混在させることはできません。どちらかを使用する必要があります。

プレーンテキスト出力:

foreach($is as $i) {
    echo $i['title'], ': ', $i['description'], "\n";
}

結果のページのソースを表示すると、不正な (プレーン テキストの) 応答が明確に表示されます。

XML を出力している場合は、次のようなものが期待できます。

foreach($is as $i) {
    echo '<title>', $i['title'], '</title><description>', $i['description'], '</description>';
}
于 2012-11-13T16:28:43.413 に答える