私の RESTful WCF サービスは、クライアントからの XML 要求本文を受け入れます。ほとんどのクライアントは PHP アプリケーションです。
PHP アプリケーションは、要素タグ内に配置された htmlentities() を使用してリクエストをエンコードします。たとえば、新しいユーザー アカウントを追加するリクエストは次のようになります。
$body = "<user>
<userName>" . htmlentities( $userName ) . "</userName>
</user>"
システムは正常に動作し、今日までエラーはありませんでした。
ログを調べたところ、このリクエストが失敗したことがわかりました。
<user>
<userName>èeesu</userName>
</user>
ただし、次の例外があります。
InvalidOperationException: "XML ドキュメントにエラーがあります (4、12)。" XmlException: 「文字参照が無効です。4 行目、12 番目の位置。」
(ここで、4 行目の 12 番目の位置は、<userName>
要素の InnerText (つまり、 string ) を参照しますèeesu;
)。
è
&
は有効な HTML エンティティですが、XML は文字参照 ( 、<
など)の最小セットのみを定義し、 XML は他のすべての文字が代わりにドキュメント エンコーディング表現にあることを想定しているため、 などを拒否することを理解していますè
。
誰かがこれが事実であることを確認できますか? もしそうなら、HTMLエンティティではなくXML固有のエンティティのみをエンコードするようにPHPを取得するにはどうすればよいですか?