2011-12-12 4 views
2

Je reçois une exception d'argument (Stream ne peut pas être nul) lors de l'appel de la méthode Save pour XmlDocument.La valeur ne peut pas être nulle. Nom du paramètre: stream lors de la conversion de XmlDocument en flux

Voici mon exemple de code

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; 
    } 

Ma méthode GetModifiedStream() prendra paramètre fluxEntrée et il sera fondamentalement changer la valeur du nœud et convertir XmlDocument à diffuser. et je reçois une exception lors de la conversion de XmlDocument en flux

Quelqu'un peut-il me dire comment faire?

Merci

Répondre

2

Vous devez utiliser un flux existant pour cela, en ce moment vous passez null ce qui provoque l'exception lorsqu'il est écrit, au lieu-à-dire utiliser un 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; 
} 

Le type de flux que vous voulez utiliser (flux de fichier, flux de mémoire, flux de réseau) dépend vraiment de votre application, mais vous devez passer une instance de flux valide à la méthode XmlDocument.Save().

+0

Merci. Je ne reçois pas d'exception maintenant. Mais y a-t-il un moyen de revenir en tant que flux au lieu de retourner MemoryStream? – mathesh

+0

@mathesh: 'MemoryStream' est un flux (en hérite), donc le reste du code peut rester inchangé. – BrokenGlass

Questions connexes