XmlReader を使用した C# での XML 解析の最適化
C# で XML ドキュメントを効率的に処理するには、異なるノードに個別のクラスを使用する構造化アプローチをお勧めします。 この例は、Account
のようなプロパティを処理する専用の AccountBase
クラスを使用した NameOfKin
データの読み取りに焦点を当てています。 StatementsAvailable
要素に移動するという課題は、XmlReader.Skip()
を使用するとエレガントに解決されます。
AccountBase
クラスには次のコード スニペットが組み込まれています:
<code class="language-csharp">while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "StatementsAvailable") { reader.Skip(); // Efficiently skips the StatementsAvailable element and its children ProcessStatements(reader); break; // Moves to the next Account element } } }</code>
ProcessStatements()
メソッドは、Statement
クラスを利用して個々のステートメントのプロパティを解析します。 このモジュール設計は、他の XML サブ要素にシームレスに拡張されます。
XmlReader
は効率的なストリーミングに優れていますが、LINQ to XML は XML 操作のためのよりユーザーフレンドリーな構文を提供します。大きな XML ファイルの場合は、ハイブリッド アプローチを検討してください。XmlReader
を使用してデータを管理しやすいチャンクにストリーミングし、より便利な LINQ to XML を使用してそれらのチャンクを処理します。
ネストされたループ処理によるコード構造の改善:
この洗練されたコード例は、ネストされた読み取りループを簡素化し、潜在的な「予想される要素を超えた読み取り」エラーを回避します。
<code class="language-csharp">using (XmlReader reader = XmlReader.Create(inputUrl)) { reader.ReadToDescendant("ApplicationPool"); // Directly navigate to the root element while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "Account") { AccountBase account = new AccountBase(reader); reader.ReadToFollowing("StatementsAvailable"); // Efficiently finds StatementsAvailable reader.Skip(); account.ProcessStatements(reader); } } }</code>
この機能強化によりプロセスが合理化され、コードがよりクリーンかつ堅牢になります。 ルート要素への直接ナビゲーションと ReadToFollowing
の使用により、効率と読みやすさが向上します。
以上がC# で XmlReader を使用して XML データを効率的に読み取り、処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。