2013-07-01 10 views
5

Non ho lavorato molto con i file XML. Ma sto scrivendo un'app ora che salva i suoi dati in formato XML.Qualsiasi vantaggio di assegnare a tutte le raccolte un nodo radice separato nei documenti XML?

Finora, ho trovato la seguente struttura di base.

<?xml version="1.0" encoding="utf-8"?> 
<categories> 
    <category id="cf6cb6bc-8142-4366-9b43-0ae6fce90df2"> 
    <subcategories> 
     <subcategory id="02b95e55-a4f7-4979-b0aa-a97f2c3327b0"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
     <subcategory id="5e9f9ef7-5190-4bcd-ab98-935d9208a4c7"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
     <subcategory id="7077d614-d3de-42d3-851a-b8c9ce0f56df"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
    </subcategories> 
    </category> 
</categories> 

Ma dopo aver guardato a lui, sembra che ci sono alcuni elementi inutili qui, e che gli stessi dati potrebbero essere ridotti al seguente:

<?xml version="1.0" encoding="utf-8"?> 
<categories> 
    <category id="cf6cb6bc-8142-4366-9b43-0ae6fce90df2"> 
    <subcategory id="02b95e55-a4f7-4979-b0aa-a97f2c3327b0"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    <subcategory id="5e9f9ef7-5190-4bcd-ab98-935d9208a4c7"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    <subcategory id="7077d614-d3de-42d3-851a-b8c9ce0f56df"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    </category> 
</categories> 

Sembra il file nel suo complesso richiede un nodo radice. Tuttavia, non sembra che tutte le sottocategorie e gli articoli necessitino di nodi root dedicati. Quindi la mia versione abbreviata scarica semplicemente tutte le sottocategorie direttamente sotto il tag di categoria e tutti gli articoli direttamente sotto il tag della sottocategoria.

Potrebbe qualcuno che lavora di più con i file XML dirmi se c'è qualche ragione per non utilizzare la versione abbreviata di cui sopra.

+2

Fintantoché il documento è un documento XML valido, non penso che sia necessario avere "nodi radice dedicati". I documenti XML sono già dettagliati, quindi è meglio tenerlo il più breve possibile. – vee

+0

Neanch'io. Ma mi chiedevo solo se ci fosse qualche svantaggio nel non averli. –

+2

L'unico svantaggio è che i nodi '' hanno altre cose allo stesso livello dei '' nodi nel campione abbreviato. Quindi potrebbe essere utile raggruppare tutte le sottocategorie sotto il proprio nodo ''. –

risposta

2

Non riesco a vedere alcun motivo per avere la gerarchia extra, se ce n'è una sola per nodo genitore e non hanno attributi o dati speciali propri. Avrei solo subcategory direttamente sotto category e article direttamente sotto subcategory. A me personalmente piace mantenere le cose pulite e semplici :)

MODIFICA: Sono d'accordo con @JimGarrison, se tu avessi altri dati a quel livello, che dal tuo esempio non sembra avere, quindi raggruppandoli sotto uno il nodo avrebbe avuto un vantaggio.

0

A volte la modellazione dei dati accurata richiede il livello extra. Ad esempio, se si desiderano attributi su "articoli" per indicare l'intervallo di date a cui si applicano gli articoli, potrebbe essere inappropriato rendere questi attributi dell'elemento di sottocategoria, specialmente se una sottocategoria potrebbe contenere articoli o libri con attributi diversi in ogni caso.

Gli elementi wrapper per contenitori o raccolte possono anche semplificare la programmazione se il contenitore ha fratelli di un tipo diverso: ad esempio se un libro ha un titolo, un editore e diversi autori, quindi avvolge gli autori in un elemento contenitore può rendere le cose più chiare.

Ma in generale sono per evitare confusione nel modello di dati; sbarazzarsi degli strati in eccesso che non servono a scopi pratici utili.

Problemi correlati