How do I close an XML document that opens with XDocument in c #?

0

I want to save an XML document several times in a certain direction. The first time I save my document there is no problem, the situation comes after I want to write it with new information. Try doing it with the following code lines:

  XDocument doc = new XDocument(new XElement("Comentarios", new XElement(usuario,comentario.ComentarioU)));

 doc.Save(directorio + "\XML\comentarios.xml");    

                if (File.Exists(directorio + "\XML\comentarios.xml"))
                {

    doc=null;
    doc=new XDocument();
                    retornoLista = abrirxml(comentario,usuario);

                }

After the first time I get an error that says my file is being used, then I would like to see how to close my file every time I open it.

Code to openXml ()

public List<string> abrirxml(comentario comentario,string usuario)
       {
            var directorio = AppDomain.CurrentDomain.BaseDirectory;
            XmlDataDocument xmldoc = new XmlDataDocument();
            XmlNodeList xmlnode;
            XmlNodeList xmlnodeSub;
            FileStream fs = new FileStream(directorio + "XML\comentarios.xml", FileMode.Open, FileAccess.Read);
            xmldoc.Load(fs);
            xmlnode = xmldoc.GetElementsByTagName("Comentarios").Item(0).ChildNodes;

           foreach (XmlNode node in xmlnode)
           {
               listadoComments.Add(node.Name.ToString()+"|"+node.InnerText);
           }

           return listadoComments;
       }
    
asked by David 31.05.2018 в 18:19
source

1 answer

2

You should use a using block to make Close and Dispose of stream to file xml .

public List<string> abrirxml(comentario comentario,string usuario)
{
    var directorio = AppDomain.CurrentDomain.BaseDirectory;
    XmlDataDocument xmldoc = new XmlDataDocument();
    XmlNodeList xmlnode;
    XmlNodeList xmlnodeSub;
    using(FileStream fs = new FileStream(directorio + "XML\comentarios.xml", FileMode.Open, FileAccess.Read))
    {
        xmldoc.Load(fs);
    }

    xmlnode = xmldoc.GetElementsByTagName("Comentarios").Item(0).ChildNodes;

   foreach (XmlNode node in xmlnode)
   {
       listadoComments.Add(node.Name.ToString()+"|"+node.InnerText);
   }

   return listadoComments;
}
    
answered by 31.05.2018 / 19:00
source