12 messaggi dal 14 giugno 2007
Ciao a tutti.
Sto cercando di sovrascrivere un file xml, utilizzando xmldomdocument...
Per questioni di portabilità, ho un file di configurazione xml. Sempre per questione di portabiità utilizzo Server.MapPath per settare il path dove risiede il documento. Questo è il codice.

string url = Server.MapPath("configurazione.xml");
XmlReader reader = new XmlTextReader(url);
XmlDocument doc = new XmlDocument();
doc.Load(reader);

Il problema è quando vado a fare doc.Save...ripasso la MapPath ma mi da questo tipo di errore:
The process cannot access the file because it is being used by another
process.

Qualcuno ha qualche idea di come risolvere il problema?
Grazie per l'attenzione.
Forse non ho capito bene quello che vuoi fare.
Vuoi usare il parser DOM oppure il parser SAX?
L'errore ti viene restituito perchè, probabilmente, quando tenti di salvare il file xml, tale risorsa è occupata dall'oggetto XmlTextReader.

A prima vista ti è sufficiente fare così:

System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(Server.MapPath("configurazione.xml"));

// ...

doc.Save(Server.MapPath("configurazione.xml"));


Se ho capito male ti chiedo scusa.

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
questo perche hai un reader aperto, prova a chiuderlo e a salvare.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
12 messaggi dal 14 giugno 2007
no, il reader lo avevo chiuso solo che non l'ho postato sul codice...
Ora provo con seguendo il consiglio di naighes, e faccio sapere se va!
Grazie per l'interessamento!
12 messaggi dal 14 giugno 2007
Niente, stesso problema...
praticamente se non ho capito male, questo è il tuo consiglio, naighes:

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("configurazione.xml"));
XmlNode nodo;
nodo = doc.DocumentElement;
foreach ...mio codice...
doc.Save(Server.MapPath("configurazione.xml"));

ma l'errore continua a darmelo...ho controllato se tenevo il file xml aperto da qualche altra parte, ma niente...
non riesco a spiegarmi il motivo...
Semmai provo con xmlWriter...si può fare la sovrascrittura con xmlWriter?
n3mesi ha scritto:
Niente, stesso problema...
praticamente se non ho capito male, questo è il tuo consiglio, naighes:

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("configurazione.xml"));
XmlNode nodo;
nodo = doc.DocumentElement;
foreach ...mio codice...
doc.Save(Server.MapPath("configurazione.xml"));


Esattamente.

n3mesi ha scritto:
ma l'errore continua a darmelo...ho controllato se tenevo il file xml aperto da qualche altra parte, ma niente...
non riesco a spiegarmi il motivo...


Se ti resituisce l'errore significa che la risorsa è già occupata.
Prova a mandare in esecuzione il codice seguente.

string path = Server.MapPath("~/App_Data/configurazione.xml");
XmlDocument document = new XmlDocument();
document.Load(path);

XmlNode rootNode = document.DocumentElement;
for (int i = 0; i < rootNode.ChildNodes.Count; i++)
{
    XmlAttribute attribute = document.CreateAttribute("added");
    attribute.Value = i.ToString();
    rootNode.ChildNodes[i].Attributes.Append(attribute);
}
document.Save(path);



n3mesi ha scritto:
Semmai provo con xmlWriter...si può fare la sovrascrittura con xmlWriter?

Certo, va benissimo anche un XmlWriter, ma ti complichi un pò di più la vita!
(anche se, in effetti, ne trarresti beneficio sul piano delle performance)
Comunque il tuo problema non dipende dalla tipologia di parser che hai adottato, bensì dal fatto che stai cercando di sovrascrivere un file che è utilizzato da un altro oggetto.
Prova a postare il codice nella sua interezza e cerchiamo di capire dove sta il problema.

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.