C#使用Linq为目录中的每个XML文件提取单个XML属性
如何使用Linq从目录中的每个XML文件中提取单个XML属性,并将该元素放入C#列表中。我必须逐个循环浏览每个文件吗?XML文件非常大,因此我希望在不将整个文件加载到内存的情况下执行此操作 谢谢,C#使用Linq为目录中的每个XML文件提取单个XML属性,c#,linq,linq-to-xml,data-extraction,C#,Linq,Linq To Xml,Data Extraction,如何使用Linq从目录中的每个XML文件中提取单个XML属性,并将该元素放入C#列表中。我必须逐个循环浏览每个文件吗?XML文件非常大,因此我希望在不将整个文件加载到内存的情况下执行此操作 谢谢, j您必须遍历每个文件,这意味着至少要解析每个文件中足够多的XML内容,以获得所需的属性 XDocument(即LINQ to SQL)将在每种情况下解析并加载完整的文档,因此您最好直接使用XmlReader实例。这将需要更多的工作:您必须读取XML节点,直到找到正确的节点,并跟踪您所在的位置。除非文件
j您必须遍历每个文件,这意味着至少要解析每个文件中足够多的XML内容,以获得所需的属性
XDocument
(即LINQ to SQL)将在每种情况下解析并加载完整的文档,因此您最好直接使用XmlReader
实例。这将需要更多的工作:您必须读取XML节点,直到找到正确的节点,并跟踪您所在的位置。除非文件很大(100 MB+),否则我无法拒绝此代码的优雅性:
var result = Directory.GetFiles(filePath)
.Select(path => XDocument.Load(path))
.Select(doc => doc.Root.Element("A").Attribute("B").Value)
.ToList();
我真的希望您的XML文件没有那么大…这些文件有多大?