XML 要素名、属性名、ID 値のエンコードとデコード

要素名と属性名、または ID 値で使用できる文字は、W3C (World Wide Web Consortium) 勧告『Extensible Markup Language (XML) 1.0 (Fourth Edition)』で定義されている XML 文字の範囲に限られます。名前に無効な文字が含まれている場合は、エンコード メソッドとデコード メソッドで有効な XML 名に変換します。

Microsoft SQL Server や Microsoft Office Word など、多くの言語やアプリケーションでは、XML 名として有効でない Unicode 文字を名前に使用できます。たとえば、データベースの列見出しが Order Detail である場合、データベースでは Order と Detail の間に空白を挿入できますが、XML では Order と Detail の間の空白が無効な XML 文字と見なされます。このため、無効な文字である空白は、エスケープされた 16 進形式エンコーディングに変換する必要があり、これは後でデコードできます。

XmlTextWriter クラスは、既定では文字のチェックを行いません。たとえば、WriteElementString("Order Detail", "My order"), というコードは、<Order Detail>My order</Order Detail>. という無効な要素を生成します。

この要素値をエンコードするときの正しいエンコーディングは、writer.WriteElementString(XmlConvert.EncodeName("Order Detail"), "My order") です。そうすれば、有効な要素 <Order_0x0020_Detail>My order</Order_0x0020_Detail> が生成されます。

参照

概念

XML データ型の変換