この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。
XmlConvert クラスは、機能的には Convert クラスと同等ですが、XML 標準をサポートしています。 型システムは XML スキーマ定義言語 (XSD) スキーマ型に基づいており、返される値は常にロケールに依存しません。
エンコーディングとデコーディング
要素名と属性名または ID 値は、W3C XML 1.0 の推奨事項に従って XML 文字の範囲に制限されます。 名前に無効な文字が含まれている場合は、このクラスの EncodeName メソッドと DecodeName メソッドを使用して、有効な XML 名に変換できます。
たとえば、データベースで列見出し "Order Detail" を使用する場合、データベースでは 2 つの単語間のスペースを使用できます。 ただし、XML では、"Order" と "Detail" の間のスペースは無効な XML 文字と見なされます。 エスケープされた 16 進エンコードに変換し、後でデコードする必要があります。
EncodeName クラスで XmlWriter メソッドを使用して、書き込まれる名前が有効な XML 名であることを確認できます。 次の C# コードは、"Order Detail" という名前を有効な XML 名に変換し、要素 <Order_0x0020_Detail>My order</Order_0x0020_Detail>書き込みます。
writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");
次の XmlConvert メソッドは、エンコードとデコードを実行します。
| メソッド | 説明 |
|---|---|
| EncodeName | 名前を取得し、エンコードされた名前と、エスケープ文字列に置き換えられた無効な文字を返します。 このメソッドでは、任意の位置にコロンを使用できます。これは、 XML 1.0 の W3C 名前空間の推奨事項に従って、名前が無効である可能性があることを意味します。 |
| EncodeNmToken | 名前を取得し、エンコードされた名前を返します。 |
| EncodeLocalName |
EncodeNameと同じですが、コロン文字もエンコードする点が異なります。名前空間修飾名のLocalName部分として名前を使用できることを保証します。 |
| DecodeName | すべてのエンコード メソッドの変換を反転します。 |
名前の検証
XmlConvert クラスには、要素名または属性名の文字をチェックし、W3C XML 1.0 の推奨事項によって設定された規則に名前が準拠していることを確認する 2 つのメソッドが含まれています。
- VerifyName は文字をチェックし、名前が有効であることを確認します。 メソッドは有効な場合は名前を返し、有効でない場合は例外をスローします。
- VerifyNCName は同じ検証を実行しますが、非修飾名を受け入れます。
XmlConvertには、トークン、空白文字、パブリック ID、およびその他の文字列を検証する追加のメソッドが含まれています。
データ型の変換
XmlConvert には、文字列から厳密に型指定されたデータ型にデータを変換できるメソッドも用意されています。 たとえば、 ToDateTime メソッドは、文字列を等価の DateTime に変換します。 これは、 XmlReader クラスのほとんどのメソッドが文字列としてデータを返すので便利です。 データを読み取った後は、使用する前に適切なデータ型に変換できます。 ToStringオーバーロードは、厳密に型指定されたデータを文字列に変換することで補完的な操作を提供します。 たとえば、Web ページのテキスト ボックスにデータを追加する場合に便利です。 ロケール設定は、データ変換中は考慮されません。 データ型は、XML スキーマ (XSD) データ型に基づいています。
.NET