2009-09-02 2 views
1

60mb 파일을 XML로 직렬화하려고하지만 시스템에 메모리 부족 예외가 발생합니다. 다른 사람이 이런 종류의 문제를 겪었습니까?60mb 파일에 대한 Xml 직렬화 문제

누군가이 문제에 대한 해결책을 제안 할 수 있습니까?

여기에 큰, 당신이 먼저 파일로 직렬화 고려해야한다고 생각하는 스트림 방법

static public string Serialize(object obj) 
    { 
      string returnValue; 
      System.Xml.Serialization.XmlSerializer xmlWriter = new System.Xml.Serialization.XmlSerializer(obj.GetType()); 
      System.IO.StringWriter xmlOut = new System.IO.StringWriter(); 

      //this is where the problem is..... 
      xmlWriter.Serialize(xmlOut, obj); 
      //return the Serialized XML 
      returnValue = xmlOut.ToString(); 
      xmlOut.Close(); 
      return returnValue; 
    } 

답변

0

입니다. 일련 번호 화는 많은 양의 메모리를 필요로하며, 순전히 메모리에서 수행하는 것이 당신을 죽이는 것입니다.

using(var file = new FileStream(...)) 
using(var streamWriter = new StreamWriter(file)) 
{ 
    xmlWriter.Serialize(streamWriter, obj); 
} 
+0

닷넷 직렬화 라이브러리는 객체를 가져올 때 사용할 수 없습니다. 이 경우 메모리에있는 객체가 문제입니다. –

+0

Ty : 귀하의 의견을 전혀 이해하지 못합니다. 그는 손에있는 객체를 가지고 있으며 XML로 직렬화하려고합니다. 이것이 바로 XmlSerializer가 구축 된 것입니다. –

+0

"60mb 파일을 XML로 직렬화하고 싶습니다 .."라고 말했습니다. 나는 그가 큰 파일을 읽고 그것을 다른 것 (이 경우 XML)으로 파싱하기를 원한다고 생각했다. –