ホームページ >バックエンド開発 >C#.Net チュートリアル >.NET Framework で XML データを簡単に処理する (3-2)
??ValidationType 属性は検証のタイプを設定します。DTD、XSD、XDR、またはなしのいずれかになります。検証タイプが指定されていない場合 (ValidationType.Auto オプションを使用)、ブラウザーはドキュメントに基づいて最も適切な検証タイプを自動的に使用します。検証プロセス中にエラーが発生すると、ValidationEventHandler イベントがトリガーされます。イベント ValidationEventHandler イベント ハンドラーが提供されていない場合、XML 例外がスローされます。 ValidationEventHandler イベント ハンドラーを定義すると、XML ソース ファイル内のエラーによって発生する XML 例外をキャッチすることができます。ブラウザの原則は、ドキュメントが整形式であること、およびスキーマに準拠していることを確認することであることに注意することが重要です。検証済みのブラウザーが重大な形式エラーのある XML ドキュメントを検出した場合、XmlException がトリガーされるだけで、他のイベントはトリガーされません。
??ユーザーが Read メソッドを使用してポインターを前方に移動すると、検証が発生します。ノードが解析されて読み取られると、検証を処理する内部オブジェクトが渡されます。認証制御は、ノード タイプと要求されている認証のタイプに基づいて行われます。ノードとそのノードに含まれる子ノードのすべての属性が検証条件を満たしているかを確認します。
??検証オブジェクトは、DTD アナライザーとスキーマ ビルダーという 2 つの異なるスタイルのツールを内部的に呼び出します。 DTD パーサーは、現在のノードの内容と、DTD に準拠していないサブツリーを調べます。スキーマ ジェネレーターは、XDR または XSD スキーマに基づいて現在のノードの SOM (スキーマ オブジェクト モデル) を構築します。スキーマ ジェネレーター クラスは、実際には、指定されたすべての XDR および XSD スキーマ ジェネレーターの基本クラスです。 XDR および XSD アーキテクチャの多くの同様のメソッドが処理されているにもかかわらず、実行時のパフォーマンスに違いはありません。
??ノードに子ノードがある場合は、別の一時ブラウザを使用して子ノード情報を収集し、ノードのスキーマ情報を完全に検証できます。図 5:
?? XmlValidatingReader クラスの構造体関数はブラウザーとして XmlReader クラスを受け取ることができますが、ブラウザーは XmlTextReader クラスまたはその An インスタンスのみであることに注意してください。派生クラスの。これは、XmlReader から派生した他のクラス (カスタム XML ブラウザーなど) を使用できないことを意味します。内部的には、XmlValidatingReader クラスはブラウザーが子 XmlTextReader オブジェクトであると想定し、渡されたブラウザーを XmlTextReader クラスに明示的に変換します。 XmlNodeReader またはカスタム ブラウザーを使用する場合、プログラムはコンパイル中にエラーが発生し、実行時に例外をスローします。
??ノード ブラウザ
??XML ブラウザは、ドキュメントのコンテンツを処理するための増分メソッド (1 つのノードを 1 つずつ読み取る) を提供します。これまで、ソース ファイルがディスク ベースのストリームまたは文字列ストリームであると想定してきましたが、実際にはソース ファイルの XMLDOM オブジェクトが提供されることは保証できません。この場合、特別な読み取りメソッドを備えた特別なクラスが必要です。この状況に備えて、.NET Framework は XmlNodeReader クラスを提供します。
??XmlTextReader が指定された XML ストリーム内のすべてのノードにアクセスするのと同じように、XmlNodeReader クラスは XMLDOM サブツリー内のすべてのノードにアクセスします。 XMLDOM クラス (.NET Framework の XmlDocument クラス) は、SelectNodes メソッドや SelectSingleNode メソッドなどの Xpath ベースのメソッドをサポートします。これらのメソッドの目的は、一致するノードをメモリに配置することです。サブツリー内のすべてのノードを処理する必要がある場合は、ノードを段階的に処理するブラウザよりもノード ブラウザの方が効率的です:
// xmldomNode は XML DOM ノードです
XmlNodeReader nodeReader = new XmlNodeReader(xmldomNode ; 最初にデータを入力しますXMLDOM ツリーを作成し、XmlNodeReader クラスと XMLDOM クラスを使用してデータを共同処理します。効率的でもあります。
上記は、.NET Framework で XML データを簡単に処理する (3-2) の内容です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。