System.Xml.XmlReader.Create メソッド
この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。
Createほとんどのオーバーロードには、オブジェクトをsettings
受け入れるパラメーターがXmlReaderSettings含まれています。 このオブジェクトを使用すると、次のことができます。
- オブジェクトでサポートする機能を XmlReader 指定します。
- オブジェクトを再利用して複数の XmlReaderSettings リーダーを作成します。 同じ機能を持つ複数のリーダーの作成に、同じ設定を使用できます。 または、インスタンスの XmlReaderSettings 設定を変更し、別の機能セットを使用して新しいリーダーを作成することもできます。
- 既存の XML リーダーに機能を追加します。 Create メソッドは別の XmlReader オブジェクトを受け取ることができます。 基になる XmlReader オブジェクトには、ユーザー定義リーダー、オブジェクト、 XmlTextReader または追加の機能を追加する別 XmlReader のインスタンスを指定できます。
- 静的Createメソッドによって作成されたオブジェクトでのみ使用できる XML 1.0 (第 4 エディション) の推奨事項に対する、より適切な準拠チェックやコンプライアンスなどの機能を最大限にXmlReader活用します。
Note
.NET には、クラスのXmlReader具象実装 (,XmlNodeReader、、XmlValidatingReaderクラスなどXmlTextReader) が含まれていますが、メソッドを使用してCreateインスタンスを作成XmlReaderすることをお勧めします。
既定の設定
オブジェクトを受け入XmlReaderSettingsれないオーバーロードをCreate使用する場合は、次の既定のリーダー設定が使用されます。
設定 | 既定値 |
---|---|
CheckCharacters | true |
ConformanceLevel | ConformanceLevel.Document |
IgnoreComments | false |
IgnoreProcessingInstructions | false |
IgnoreWhitespace | false |
LineNumberOffset | 0 |
LinePositionOffset | 0 |
NameTable | null |
DtdProcessing | Prohibit |
Schemas | 空の XmlSchemaSet オブジェクト |
ValidationFlags | ProcessIdentityConstraints 有効 |
ValidationType | None |
XmlResolver | null |
一般的なシナリオの設定
XmlReaderSettings一般的な XML リーダー シナリオの一部に対して設定する必要があるプロパティを次に示します。
要件 | Set |
---|---|
データは整形式の XML ドキュメントである必要があります。 | ConformanceLevel から Document。 |
データは、整形式の XML 解析エンティティである必要があります。 | ConformanceLevel から Fragment。 |
データは DTD に対して検証する必要があります。 | DtdProcessing ~ Parse ValidationType から DTD。 |
データは XML スキーマに対して検証する必要があります。 | ValidationType ~ Schema Schemas 検証に XmlSchemaSet 使用する に設定します。 XmlReader XML-Data Reduced (XDR) スキーマ検証はサポートされていないことに注意してください。 |
インライン XML スキーマに対してデータを検証する必要があります。 | ValidationType ~ Schema ValidationFlags から ProcessInlineSchema。 |
サポートを入力します。 | ValidationType ~ Schema SchemasXmlSchemaSetを使用します。 |
XmlReader では、XML-Data Reduced (XDR) スキーマの検証はサポートされていません。
非同期プログラミング
同期モードでは、メソッドは Create ファイル、ストリーム、またはテキスト リーダーのバッファーからデータの最初のチャンクを読み取ります。 I/O 操作が失敗すると、例外がスローされる可能性があります。 非同期モードでは、最初の I/O 操作は読み取り操作で発生するため、発生した例外は読み取り操作の発生時にスローされます。
セキュリティに関する考慮事項
既定では、 XmlReader ユーザー資格情報のないオブジェクトを XmlUrlResolver 使用してリソースを開きます。 つまり、既定では、XML リーダーは資格情報を必要としない任意の場所にアクセスできます。 このプロパティを XmlResolver 使用して、リソースへのアクセスを制御します。
- XML リーダーがXmlSecureResolverアクセスできるリソースを制限するオブジェクトに設定XmlResolverします。...
null
XML リーダーが外部リソースを開かないように設定XmlResolverします。
例
この例では、重要でない空白を削除し、コメントを削除し、フラグメント レベルの準拠チェックを実行する XML リーダーを作成します。
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
次の例では、既定の資格情報を XmlUrlResolver 使用してファイルにアクセスします。
// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)
次のコードは、別のリーダー内のリーダー インスタンスをラップします。
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
この例では、リーダーをチェーンして DTD と XML スキーマの検証を追加します。
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings); // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings) ' XML Schema Validation
.NET