0

xml タグ内の文字列として xml を Web サービスに送信することになっています。送信されたファイルは「非準拠」として表示されるため、正しく送信されていることを確認して、実際のxmlの内容ではなく、送信方法にエラーがあるかどうかを確認したいだけです。PHPを使用しているので、送信したいxmlで文字列を作成し、

$send_xml = '<?xml version="1.0" encoding="UTF-8"?>
             <myFile><stuff></stuff></myFile>';

次のように、外側の xml の content タグの間に配置しました。

<content><![CDATA["'.$send_xml.'"]]></content>

これは私の「$send_xml」を文字列として送信すべきではありませんか?

4

2 に答える 2

0

引用符が多すぎると思います。

試す:

<content><![CDATA['.$send_xml.']]></content>

...代わりは。

(PHP 文字列が単一引用符で囲まれていると仮定すると) コードは以下を生成します。

<content><![CDATA["<?xml version="1.0" encoding="UTF-8"?><myFile><stuff></stuff></myFile>"]]></content>

...おそらくあるべき場所:

<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?><myFile><stuff></stuff></myFile>]]></content>

...内側の XML を二重引用符で囲みません。

または、これ:

<content>'.htmlspecialchars($send_xml, ENT_COMPAT).'</content>

...内部 XML の特殊文字をエスケープすることにより、解析時に同じ結果を生成する必要があります。

于 2012-04-17T19:36:08.143 に答える
0

$send_xmlCDATA ブロック自体に CDATA ブロックが含まれていると CDATA ブロックが破損するため、CDATA ブロックを使用しないことを検討することをお勧めします。

$send_xml代わりに、文字列を xml 文字列に入れる前にエスケープすることを検討することをお勧めします。

PHP は、関数を使用してそのようなエスケープを行うことができますhtmlentities

于 2012-04-17T19:35:23.667 に答える