值不能为空。参数名称:将XmlDocument转换为流时的流

时间:2011-12-12 05:40:49

标签: c# asp.net

在为XmlDocument调用Save方法时,我得到了Argument Exception(Stream不能为null)。

这是我的示例代码

    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转换为流

时遇到异常

谁能告诉我怎么做?

由于

1 个答案:

答案 0 :(得分: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()方法。