2011-12-12 2 views
2

XmlDocument의 Save 메서드를 호출하는 동안 인수 예외 (스트림이 null 일 수 없음)가 나타납니다.값은 null 일 수 없습니다. 매개 변수 이름 : XmlDocument를 스트림으로 변환하는 동안의 스트림

여기 내 예제 코드입니다

public Stream GetModifiedStream(Stream inputStream, string NewText) 
    { 
     Stream outputStream = null; 
     try 
     { 
      XmlDocument document = new XmlDocument(); 
      document.Load(inputStream); 
      XmlNode myNode = document.SelectSingleNode("/title"); 
      myNode.InnerText = NewText; 
      document.Save(outputStream); 
     } 
     catch (Exception exp) 
     { 
      outputStream = inputStream; 
     } 
     return outputStream; 
    } 

내 GetModifiedStream() 메소드의 InputStream 매개 변수를 사용하고는 기본적으로 노드의 값을 변경하고 스트리밍을 XmlDocument를 변환합니다. XmlDocument를 스트림으로 변환하는 중에 예외가 발생합니다.

누구든지이 작업을 수행하는 방법을 알려 줄 수 있습니까?

감사

답변

2

당신은 즉, MemoryStream을 사용 지금 당신은 대신에 기록 할 때 예외가 발생 null을 통과,이에 대한 기존의 스트림을 사용해야합니다 : 스트림의

public Stream GetModifiedStream(Stream inputStream, string NewText) 
{ 
    Stream outputStream = new MemoryStream(); 
    try 
    { 
     XmlDocument document = new XmlDocument(); 
     document.Load(inputStream); 
     XmlNode myNode = document.SelectSingleNode("/title"); 
     myNode.InnerText = NewText; 
     document.Save(outputStream); 
    } 
    catch (Exception exp) 
    { 
     outputStream = inputStream; 
    } 
    return outputStream; 
} 

유형을 (파일 스트림, 메모리 스트림, 네트워크 스트림)을 사용하려면 실제로 응용 프로그램에 따라 다르지만 유효한 스트림 인스턴스를 XmlDocument.Save() 메서드에 전달해야합니다.

+0

감사합니다. 지금 예외가 발생하지 않습니다.하지만 MemoryStream을 반환하는 대신 스트림으로 돌아갈 방법이 있습니까? – mathesh

+0

@mathesh :'MemoryStream'은 스트림 (상속)이므로 나머지 코드는 변경되지 않습니다. – BrokenGlass

관련 문제