(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【cURL/XML】タグ(<,>)を文字列で送るとXML Parse Failedになる事象

スポンサーリンク

事象

XMLを利用してcurlコマンドで情報を以下のように送信する際に

# curl -X POST -H "Content-type: text/xml" ...

XML内に"<"や">"が入っていると以下のように失敗する。

400 XML Parse Failed
環境情報
# curl --version
curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2u zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3

原因/解決策

XMLではタグに相当する箇所を以下のような値でエスケープして送る必要がある。

< → &lt;	
> → &gt;

よって"<"の部分を"<"として送付すると"<"として送付可能になる。

以下、補足です。

補足

以下記事のようにはてなブログではAPIを通じて文章を投稿できますが

タグ付きの文章をそのまま送ろうとするとXMLのタグとして読み込まれてエラーになります。

< → &lt;	
> → &gt;
& → &amp;
' → &apos;
" → &quot;
(スペース) → &#xA0; 

よく使う変換は上記ですのでご参考ください。