XML 要素名、属性名、ID 値のエンコードとデコード
更新 : November 2007
要素名と属性名、または ID 値で使用できる文字は、www.w3.org/TR/2000/REC-xml-20001006.html で公開されている W3C (World Wide Web Consortium) 勧告『Extensible Markup Language (XML) 1.0 (Second 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> が生成されます。