2011-03-31 2 views
0

. 알아, 거기에 더 나은 데이터 형식이 있지만 우리는 이유가!쓰기 XML 순차적 I의 데이터 스트림을 기록하기 위해 XML을 사용하고

일반적으로 I 메모리에 XML 데이터를 저장 한 후 밖으로 모든 일을 작성하는 XmlDocument를을 사용합니다. 데이터 스트림을 기록하는 데 걸리는 시간이 지정되지 않았고 메모리가 부족하지 않을 정도로 충분히 짧은 기간에는 수정되지 않을 가능성이 높기 때문에 그다지 도움이되지 않습니다.

가장 좋은 방법은 무엇일까?

감사합니다.

답변

3

글쎄, 당신은 XmlWriter를 사용할 수 있습니다. 까다로운 부분은 언제 문서를 닫아야 하는지를 알 수 있습니다. 그렇게하기 전에 유효한 XML이 아닙니다. 그렇게 한 후에는 더 이상 추가 할 수 없습니다.

XmlWriter은 직접 일 필요는 없습니다. 예를 들어, XML에 LINQ를 사용하여 (내 선호하는 XML의 API; 많은XmlDocument 등 클래스보다 더 좋은) 당신이 작가를 작성 (컨테이너 예 오프닝 태그) 어떤 "헤더"정보를 기입 한 후 XElement 개체를 만들 수 있습니다 작성하려는 각 값에 대해 element.WriteTo(writer)으로 전화하십시오.

샘플 코드 :

using System; 
using System.Xml; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     using (XmlWriter writer = XmlWriter.Create("test.xml")) 
     { 
      writer.WriteStartDocument(); 
      writer.WriteStartElement("log"); 
      writer.WriteStartElement("entries"); 

      for (int i = 0; i < 10; i++) 
      { 
       XElement element = new XElement("entry", "Entry " + i); 
       element.WriteTo(writer); 
      } 
      writer.WriteEndElement(); 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 
     } 
    } 
} 
+0

감사합니다 존, 나는 Linq에 물건을 살펴해야합니다 - 나는 거기에 또 다른 XML API는 있었다 실현하지 않았다! – Nick

+0

@Nick : .NET 3.5에서 소개되었습니다. 여전히 .NET 2.0 또는 3.0을 사용하고 있다면 XmlWriter와 관련된 다른 접근 방법을 사용해야합니다. –

+0

아니요, 지금 3.5에 있습니다. 감사합니다! – Nick

1

XmlWriter가 빠르고, 비 캐시 앞으로 만 스트림 또는 XML 데이터를 포함하는 파일을 생성하는 수단을 제공한다.

0

IMO 가장 좋은 방법은 XmlWriter 클래스를 사용하는 것입니다 (this article 참조).

관련 문제