1. ホーム
  2. xml

[解決済み] XML文書でエスケープする必要がある文字は何ですか?

2022-03-16 13:07:10

質問事項

XML文書でエスケープしなければならない文字は何ですか、またはそのような一覧はどこにありますか?

どのように解決するのですか?

適切なクラスやライブラリを使用すれば、それらがエスケープを行ってくれます。XMLの問題の多くは、文字列の連結が原因です。

XMLエスケープ文字

5つしかありません。

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

文字のエスケープは、特殊文字が使用される場所に依存します。

例では、検証は W3C Markup Validation Service(マークアップ検証サービス .

テキスト

安全な方法は、テキスト中の5文字すべてをエスケープすることです。しかし、3つの文字 " , '> はテキストでエスケープする必要はありません。

<?xml version="1.0"?>
<valid>"'></valid>

属性

安全な方法は、属性内の5文字すべてをエスケープすることです。しかし > 文字は属性内でエスケープする必要はありません。

<?xml version="1.0"?>
<valid attribute=">"/>

' の場合、属性内で文字をエスケープする必要はありません。 " :

<?xml version="1.0"?>
<valid attribute="'"/>

同様に " であれば、属性内でエスケープする必要はありません。 ' :

<?xml version="1.0"?>
<valid attribute='"'/>

コメント

特殊文字全5種 はいけません。 がコメントでエスケープされます。

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

全5種類の特殊文字 はいけません。 でエスケープされます。 CDATA セクションを作成します。

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

加工方法

全5種類の特殊文字 はいけません。 をXML処理命令でエスケープしてください。

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

XMLとHTMLの比較

HTMLには 独自のエスケープコードのセット より多くの文字をカバーすることができます。