次の方法で共有


System.Xml.XmlConvert クラス

この記事は、この API のリファレンス ドキュメントの補足説明です。

XmlConvert クラスは機能的には Convert クラスと同等ですが、XML 標準をサポートしています。 型システムは XML スキーマ定義言語 (XSD) のスキーマ型に基づいており、常にロケールに依存しない値が返されます。

エンコーディングとデコーディング

要素と属性の名前または ID の値は、W3C の XML 1.0 に関する勧告に従って、XML 文字の範囲に制限されます。 名前に無効な文字が含まれる場合は、このクラスの EncodeNameDecodeName メソッドを使って、有効な XML 名に変換できます。

たとえば、データベースで "Order Detail" という列見出しを使いたい場合、データベースでは 2 つの単語の間にスペースがあってもかまいません。 一方、XML では、"Order" と "Detail" の間のスペースは無効な XML 文字と見なされます。 エスケープされた 16 進エンコードに変換し、後でデコードする必要があります。

XmlWriter クラスの EncodeName メソッドを使うと、有効な XML 名が確実に書き込まれるようにできます。 次の C# コードは、名前 "Order Detail" を有効な XML 名に変換して、要素 <Order_0x0020_Detail>My order</Order_0x0020_Detail> を書き込みます。

writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");

次の XmlConvert メソッドは、エンコードとデコードを実行します。

メソッド 説明
EncodeName 名前を受け取り、エンコードされて、無効な文字がエスケープ文字列に置き換えられた名前を返します。 このメソッドでは、コロンがどこにあってもかまいません。これは、W3C の XML 1.0 での名前空間に関する勧告に従って、名前がやはり無効になる場合があることを意味します。
EncodeNmToken 名前を受け取り、エンコードされた名前を返します。
EncodeLocalName EncodeName と同様ですが、コロン文字もエンコードされる点が異なり、名前空間修飾名の LocalName 部分として名前を使用できることが保証されます。
DecodeName すべてのエンコーディング メソッドの変換を元に戻します。

名前の検証

XmlConvert クラスには、要素または属性の名前の文字をチェックし、名前が W3C の XML 1.0 に関する勧告推奨で規定されている規則に準拠していることを確認する 2 つのメソッドが含まれます。

  • VerifyName は、文字をチェックして名前が有効であることを検証します。 このメソッドは、名前が有効な場合はそれを返し、有効でない場合は例外をスローします。
  • VerifyNCName は同じ検証を実行しますが、修飾されていない名前を受け入れます。

XmlConvert には、他にもトークン、空白文字、パブリック ID、その他の文字列を検証するメソッドが含まれています。

データ型の変換

XmlConvert には、文字列から厳密に型指定されたデータ型にデータを変換できるメソッドも用意されています。 たとえば、ToDateTime メソッドは、文字列をそれと同等の DateTime に変換します。 XmlReader クラスのほとんどのメソッドはデータを文字列として返すため、これは役に立ちます。 データを読み込んだ後、使う前にそれを適切なデータ型に変換できます。 ToString のオーバーロードは、厳密に型指定されたデータを文字列に変換することで、補完的な操作を提供します。 たとえば、これは Web ページのテキスト ボックスにデータを追加する場合に便利です。 データの変換では、ロケールの設定は考慮されません。 データ型は、XML スキーマ (XSD) のデータ型に基づいています。