Linq を使用して、ディレクトリ内の各 XML ファイルから単一の XML 属性を抽出し、その要素を C# リストに配置するにはどうすればよいですか。各ファイルを 1 つずつループする必要がありますか? XML ファイルは非常に大きいため、ファイル全体をメモリにロードせずにこれを実行したいと考えています。
ありがとう、j
Linq を使用して、ディレクトリ内の各 XML ファイルから単一の XML 属性を抽出し、その要素を C# リストに配置するにはどうすればよいですか。各ファイルを 1 つずつループする必要がありますか? XML ファイルは非常に大きいため、ファイル全体をメモリにロードせずにこれを実行したいと考えています。
ありがとう、j
ファイルが大量 (100 MB 以上) でない限り、このコードの優雅さを断ることはできません。
var result = Directory.GetFiles(filePath)
.Select(path => XDocument.Load(path))
.Select(doc => doc.Root.Element("A").Attribute("B").Value)
.ToList();
XMLファイルがそれほど大きくないことを本当に願っています...
すべてのファイルを確認する必要があります。これは、必要な属性を取得するために、少なくとも各ファイルの XML コンテンツを十分に解析することを意味します。
XDocument
XmlReader
(つまり、LINQ to SQL) は、それぞれの場合に完全なドキュメントを解析してロードするため、インスタンスを直接使用する方がよい場合があります。これにはさらに多くの作業が必要になります。現在の場所を追跡しながら、適切なノードに到達するまで XML ノードを読み取る必要があります。