約 30 個のランダムな名前の XML ファイルを含むディレクトリがあります。したがって、名前はその内容についての手がかりにはなりません。そして、定義済みのルールに従って、これらすべてのファイルを 1 つのファイルにマージする必要があります。残念ながら、単純なスタイルシートを使用するには複雑すぎます。
各ファイルは、そのルート内に最大 15 の異なる要素を持つことができます。そのため、それぞれ XDocument をパラメーターとして取り、XML 内の特定の要素を検索する 15 の異なるメソッドがあります。次に、そのデータを処理します。また、これらのメソッドを特定の順序で呼び出すため、すべてのデータが正しい順序で処理されることを保証できます。
ノードの例には、製品のリスト、特定の製品コードの価格のリスト、製品名の翻訳のリスト、国のリスト、特定の国での製品の割引のリストなどがあります。いいえ、これらも非常に単純な構造ではありません。
今、私は次のようなことをしています:
List<XmlFileData> files = ImportFolder.EnumerateFiles("*.xml", SearchOption.TopDirectoryOnly).Select(f => new XDocument(f.FullName)).ToList();
files.ForEach(MyXml, FileInformation);
files.ForEach(MyXml, ParseComments);
files.ForEach(MyXml, ParsePrintOptions);
files.ForEach(MyXml, ParseTranslations);
files.ForEach(MyXml, ParseProducts);
// etc.
MyXml.Save(ExportFile.FullName);
メモリ内での読み取りを減らし、より高速な結果を生成する方法でこれを行うことができるかどうか疑問に思います。ただし、速度はメモリよりも重要です。したがって、このソリューションは機能します。より少ないメモリを使用するより高速なものが必要です。
助言がありますか?