2011-12-12 53 views
2

我在调用XmlDocument的Save方法时获取参数异常(流不能为空)。值不能为空。参数名称:将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

你必须使用这个现有的流,现在你通过null从而导致该异常被写入的时候,而不是即使用一个MemoryStream:

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

Thanks.I'm现在没有得到异常..但有什么办法返回作为流而不是返回MemoryStream? – mathesh

+0

@mathesh:'MemoryStream'是一个Stream(继承自它),所以其余的代码可能保持不变。 – BrokenGlass