XML come database

Ho letto di XML, XSL, XPath, ecc. Voglio iniziare questo piccolo script in PHP usando XML come database per creare una semplice app CRUD. Userò SimpleXML ma dopo aver letto alcune risposte su StackOverflow sembra che molte persone suggeriscano DOMDocument (c'è qualcosa che benefici di usare DOMDocument più di SimpleXML?)

Ad each modo, quello che mi dà fastidio è come inserire un ID su di loro? Dovrei iniziare con "1" e poi quando qualcuno aggiunge un nodo, lo incrementa e così via?

C'è anche una categoria, voglio mettere un questo tipo di struttura

Parent - Children - Children - Subchildren 

Ho un'idea su come inserirlo in XML, ma il problema per me è quello di analizzarli.

Ad each modo, le categorie non mi infastidiscono più di tanto. Sono più interessato a sapere se dovrei tenere un count ID salvato in un XML e usarlo come "riferimento".

Hai detto "XML come database". XML è solo un linguaggio di markup, quindi quello che volevi dire era " un file come database" e sarebbe un errore. Ti imbatterai in un problema di concorrenza, corruzione ansible e un sacco di altri problemi, per non parlare delle performance abissali di un grande documento XML.

Se quello di cui hai bisogno è un database, allora usa solo: un database. Non un file.

SQLite è semplice da usare e abbastanza veloce per carichi leggeri, sebbene manchi di una buona controparte per phpMyAdmin. In caso contrario, il tuo webhost offre certamente un database MySQL.

Come esercizio questo è un po 'interessante, ma tutti ti dicono di non usare XML per questo è giusto. Un RDBMS è la soluzione migliore per lo storage di cui stai leggendo e scrivendo.

Per quanto riguarda il tuo problema, probabilmente aggiungerei un attributo id a qualsiasi nodo a cui tenessi conto di avere un id . Quindi, se avessi usato l'estensione DOM, avrei setAttribute , o se avessi usato SimpleXML, avrei usato addAttribute .

Ma ci sono ancora più soluzioni per gestire XML in PHP. Darei un'occhiata a molti e vedere quali soddisfano meglio le tue esigenze.

Buona fortuna.

IMO vorrei evitare di mantenere un count id nell'XML. Se vuoi tenerlo memorizzato nella cache come var nello script, penso che sarebbe ok – quindi fai un count su quel particolare elemento, se necessario, la prima volta che aggiungi un nuovo elemento di quel tipo. Altrimenti potreste potenzialmente avere un problema se il count dell'ID nel file non risolve il count dell'id degli elementi. Tuttavia, se si tratta di un'app con più utenti, è ansible che si stia intromettendo il territorio delle condizioni di gara perché è ansible che non si abbia sempre un count accurato se qualche cosa è stata scritta su disco mentre qualcun altro sta ancora lavorando. Si consiglia di memorizzare i conteggi nella cache in un semplice file di text o qualcosa del genere.

Beh, non ti aiuterò, ma ti darò un consiglio: non farlo. XML è molto lento rispetto, per esempio SQLLite. Perché vuoi XML?

Ho intenzione di andare controcorrente e dire che non c'è nulla di NULLA nell'usare un database di file flat, in questo caso XML

Sono pro e contro, e per molti i contrari sembrano travolgenti da affrontare e dare consigli sul fatto che la flat file è una ctriggers strada da percorrere. È qualcosa che non va, piuttosto che questa generalizzazione. Un modo più costruttivo sarebbe quello di indicare quali sono gli svantaggi piuttosto che denunciare file flat come opzione.

Esistono alcune implementazioni di successo di un database di file flat, ad esempio il semplice CMS basato su XML. Penso che potresti essere in grado di sondare quel codice e vedere cosa stanno facendo con l'XML.

Credo che più spesso del necessario venga usato un database sql, quando qualcosa di più semplice sarebbe sufficiente. Un database Sql non è né corruzione né a prova di hacker e si riduce SEMPRE all'implementazione.