2013-04-02 2 views
0

현재 50 줄에 한 번에 XML 파일을 읽는 방법을 만들고 있습니다.이 방법을 사용하면 프로그램에서 더 큰 파일을 사용할 수 있습니다.xml 파일을 한 번에 50 줄 읽어들입니다.

현재 다음 코드를 사용하여이 작업을 수행하려고합니다.

List<dataclass.DataRecord> list = new List<dataclass.DataRecord>(); 
string filename = "FileLocation" 
XmlDocument testing = new XmlDocument(); 

//using (StreamReader streamreader = new StreamReader(filename)) 
using (XmlTextReader reader = new XmlTextReader(new StringReader(filename))) 
{ 
    while (reader.Read() != null) 
    { 
    for (int i = 0; i < 50; i++) 
    { 
    testing.Load(reader); 

    //list.add(line); 
    Console.WriteLine(testing); 
    //testing.Load(reader); 
    } 
    } 
} 

라인 그냥 난 내 목표를 달성하는 데 사용하고 난 그냥 온라인을 배치하지 않으려로 파일 이름이 반출 된 이전의 아이디어에서입니다 댓글을 달았습니다.

기본적 순간에 나는 다음과 같은 오류가 계속 :

데이터를 루트 수준에서 잘못되었습니다.

A.이 올바른 방법에 대해 간다 : 1 호선, 위치는

1. 그래서 나는 내가하면 몰라. B.이 오류를 해결할 수있는 유일한 방법입니다

희망 누군가가 감사를 도울 수있다 "루트 +/루트"태그로 "testing.load"을 둘러싼입니다.

+1

XML은 라인이있는 ** 플랫 파일 **이 아닌 ** 트리 **처럼 생각해야합니다. XML에서 선이 이해가 안되는 경우, 50 개의 "선"만 읽으면 ** 노드 **를자를 수 있습니다. 이 일을 통해 당신은 무엇을 이루고 있습니까? – Belogix

+0

오케이 이런 일을 한 번 봐 주면, 나는이 일을하기에 다소 새로운 것입니다. – user2169674

+0

당신이 무엇을 성취하는지에 대한 질문에 답하기 위해, 나는 한 번에 모든 파일보다는 점진적으로 파일을로드하려고합니다. – user2169674

답변

0

제 의견에 설명 된 것처럼 XML은 노드으로 구성되어 있습니다. 반면에 라인이있는 플랫 파일이었던 것처럼 보입니다.

몇 가지 Stackoverflow 질문과 당신이하려는 것과 일치하는 답변이 있습니다. 진짜 질문은 "큰 XML 파일을 어떻게로드 할 수 있습니까?"입니다. 대답은 하나의 큰 덩어리로로드하는 대신 스트림을 사용하는 것입니다. 거기에서부터 XmlReader을 사용하는 것에 대한 많은 리소스를 찾을 수 있습니다. 다른 SO 기사에 대한 포인터의

커플 : 도움이

C# and Reading Large XML Files

Reading large XML documents in .net

희망!

+0

이 링크를보고있는 것처럼 많이 도움이됩니다. 귀하의 의견과 pyfods 답변의 조합에서. – user2169674

0

당신은을 XmlDocument로 XML을로드하려는 경우 - 왜 그냥

XmlDocument testing = new XmlDocument(); 
testing.Load(filename); 
+0

내가 할 수있는 것은 알지만 프로그램이 매우 큰 파일을로드해야하므로 점진적으로 파일을로드하는 방법이 효율적이어야합니다. – user2169674

0

XML 파일 정말 큰 경우 (구문 분석 프르 파서의 일종을 사용하는 것이 더 낫다 태그 부산물 태그, 애트리뷰트 별 속성 등)를 DOM 파서가 아닌 (파싱하는 동안 전체 문서를로드하고, 메모리에 유지함).

관련 문제