37 messaggi dal 18 agosto 2006
Ciao a tutti,
vi è mai capitato di lavorare su delle app. che utizzano xml come database?.

Questo è quello che stà capitando a me in questi giorni, e devo dire che abbituato alla struttura relazionale dei DB, alle query ed in particolar modo agli inseparabili OMR, con xml stò trovando alcune difficoltà.

Innanzitutto esiste un OMR che soddisfi anche questo tipo di scenario?

Ad esempio, supponiamo di avere un file .xml strutturato in questa maniera:

<scratchPad>
<sheets>
<sheet guid="1" date="2010-10-06T18:13:09.0700">
<entry userCode="89376">
<!-- Altri nodi figlio in questa posizione -->
</entry>
</sheet>
</sheets>
</scratchPad>

Adesso è possibile modificare esclusivamente la data dello sheet con guid pari a 1 senza toccare i figli sottostanti?.

Cioè intendo dire è possibile salvare porzione del file senza doverlo caricare tutte le volte in memoria, modificarlo e poi salvarlo tutto nuovamente?

PS: per decisioni progettuali prese a suo tempo, il file non può essere sostituito con DB. :(

Grazie
Daniele
2.193 messaggi dal 30 novembre 2001
certo che è possibile modificare solo una parte del file xml, ma lo devi cmq prima caricare tutto, e poi selezioni solo il nodo che ti serve
LINQ2XML
è molto potente, e penso faccia al caso tuo

            string sXml = "<scratchPad><sheets><sheet guid=\"1\" date=\"2010-10-06T18:13:09.0700\"><entry userCode=\"89376\"><!-- Altri nodi figlio in questa posizione --></entry></sheet></sheets></scratchPad>";
            XDocument xdoc = XDocument.Parse(sXml);
            xdoc.Root.Element("sheets").Element("sheet").SetAttributeValue("date", DateTime.Now.ToString());
            xdoc.Save(sFileName);


Il namespace è System.Xml.Linq.
Modificato da dancerjude il 07 ottobre 2010 13.15 -
Un'altra alternativa secondo me, potrebbe essere quella di generare a runtime il file xml attraverso un handler associato ad esempio ad un piccolo Db, cosi hai la possibilità di avere entrambi le cose (xml + Db) e di poter modificare il tuo "xml" come e quando vuoi.

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
37 messaggi dal 18 agosto 2006
Ciao,
grazie per tutti i vari consigli che mi avete fornito.

Volevo chiedere a dancerjude, l'oggetto XDocument, carica sempre in meoria tutto il file?

la mia paura è di avere un degrado delle performance nel caso in cui tale file dovesse inizziare a pesare un pò.

La soluzione di riccardo78 non mi dispiace, ma non ho capito se intendi costruire dal db il file xml (struttura e dati), lavorare su quest'ultimo e persistere i risultati nuovamente nel db.

Potresti essere più chiaro?

Ancora una cosa, qualcuno di voi conosce le RafCollection?

Grazie
Daniele
In pratica tu hai un Db e un httpHandler. All'interno dell'handler vai a strutturare il file xml (con tutte le sue dichiarazioni) e con tutti i suoi node, childNode, etc. e nel nodo (o sotto nodo) che vuoi vengano apportate le modifiche semplicemente leggi i dati dal Db. lo dichiari nel web.config ed il gioco è fatto! La cosa bella è che puoi specificare il nome file che vuoi ed in realtà non è nemmeno presente fisicamente nella root ma viene generato a runtime! Con la differenza che se ad esempio da una pagina richiami il file xml ti viene interamente restituito!

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
2.193 messaggi dal 30 novembre 2001
ricardo78 ha scritto:
In pratica tu hai un Db e un httpHandler. All'interno dell'handler vai a strutturare il file xml (con tutte le sue dichiarazioni) e con tutti i suoi node, childNode, etc. e nel nodo (o sotto nodo) che vuoi vengano apportate le modifiche semplicemente leggi i dati dal Db. lo dichiari nel web.config ed il gioco è fatto! La cosa bella è che puoi specificare il nome file che vuoi ed in realtà non è nemmeno presente fisicamente nella root ma viene generato a runtime! Con la differenza che se ad esempio da una pagina richiami il file xml ti viene interamente restituito!


non mi sembra una buona idea, allora a questo punto tanto vale che lascia perdere il file xml se questo lo deve utilizzare solo come struttura per il db.
DanEsp ha scritto:
Volevo chiedere a dancerjude, l'oggetto XDocument, carica sempre in meoria tutto il file?

la mia paura è di avere un degrado delle performance nel caso in cui tale file dovesse inizziare a pesare un pò.


per quanto ricordi io si, ma dovrebbe essere ottimizzato come performance rispetto agli XmlDocument, magari appena ho tempo approfondisco e ti faccio sapere...


La soluzione di riccardo78 non mi dispiace, ma non ho capito se intendi costruire dal db il file xml (struttura e dati), lavorare su quest'ultimo e persistere i risultati nuovamente nel db.


in effetti un db è uno strato in più rispetto ai file, comunque sia, se ritieni che l'introduzione di un db possa esserti utile posso consigliarti di usae il Sql Server Compact Edition (il vecchio db per mobile) che può essere utilizzato anche come db applicativo, è molto piccolo, molto veloce, non necessità di installazioni nè servizi da lanciare (sono poche dll) e può contenere fino a 4GB con performance tutto sommato più che soddisfacenti... ma ripeto, stai mettendo un altro strato oltre i file, a quel punto o elimini i file e metti tutto su db o ti tieni i file IMHO

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC