2010-05-11 1 views
1

Linq를 사용하여 디렉토리의 각 XML 파일에서 하나의 XML 속성 양식을 추출하고 그 요소를 C# 목록에 넣으려면 어떻게해야합니까? 각 파일을 하나씩 반복해야합니까? XML 파일은 꽤 크기 때문에 전체 파일을 메모리에로드하지 않고이 작업을하고 싶습니다.C# Linq를 사용하여 디렉토리의 각 XML 파일에 대해 단일 XML 속성 추출

감사합니다, J

+1

이 파일의 크기는 어느 정도입니까? – ChaosPandion

답변

1

당신은 모든 파일을 통과해야합니까, 이것은 적어도 필수 속성에 도착하는 각 파일의 XML 내용을 충분히 분석 의미합니다.

(즉, LINQ to SQL)은 각각의 경우에 전체 문서를 구문 분석하고로드하므로 XmlReader 인스턴스를 직접 사용하는 것이 좋습니다. 더 많은 작업이 필요합니다. 올바른 노드에 도달 할 때까지 XML 노드를 읽어야하며 현재 위치를 추적 할 수 있습니다. 파일이 대규모 (1백메가바이트 +)이 코드의 우아함 거절 할 수 없을 것입니다하지 않는 한

+1

오, 'XmlReader'를 직접 사용하는 것은 믿을 수 없을 정도로 지루합니다. – ChaosPandion

2

:

var result = Directory.GetFiles(filePath) 
    .Select(path => XDocument.Load(path)) 
    .Select(doc => doc.Root.Element("A").Attribute("B").Value) 
    .ToList(); 

난 정말 당신의 XML 파일이 있지만 그렇게 큰되지 않습니다 희망이 ...

관련 문제