Domanda

Quali convenzione sarebbe preferito e perché (includere alcuni pro e contro di uno sopra l'altro)?

Questa:

<company>
    <employees>
        <employee />
        <employee />
        <employee />
    </employees>
    <buildings>
        <building />
        <building />
    </building>
</company>

o questo:

<company>
    <employee />
    <employee />
    <employee />
    <building />
    <building />
</company>
È stato utile?

Soluzione

Non ci sono ragioni semantiche per avere rappresentazione esplicita della collezione attraverso un elemento specifico. Alla fine, entrambi i documenti hanno lo stesso significato -. Rappresentano una società con tutti i suoi dipendenti e gli edifici

Tuttavia, ci sono ulteriori vantaggi il primo esempio offre:

  • è più leggibile e può beneficiare di delineando negli editor.
  • è possibile creare più rigoroso schema
  • è più facile per serializzare digitato fortemente collezioni
  • è possibile specificare attributi dell'elemento di raccolta che si applicano a tutti gli elementi all'interno

Il rovescio della medaglia, il secondo esempio ha anche alcuni vantaggi della propria (anche se faccio trovare questi dubbia almeno):

  • è meno loquace / usa meno memoria
  • è più facile da elaborare attraverso strumenti non XML

Altri suggerimenti

In genere quando si tratta di XML in programmazione, spesso si desidera tradurre in oggetti che il programma può utilizzare. La maggior parte dei serializzatori XML prendono elementi per rappresentare le proprietà dell'elemento genitore.

Quando si raggrupparli come nel tuo esempio alto, serializzatori in grado di interpretare che come una singola raccolta o proprietà di matrice. In questo caso, si avrebbe un Company, che ha una proprietà Employees, che è una raccolta di oggetti Employee.

Se si fa il secondo modo, ci si ritroverà con un oggetto Company con proprietà chiamate "Employee", "Employee2", "Employee3" o qualcosa di simile. Quando si programma, che non è un buon design dell'oggetto.

Ci sono attributi o dati si potrebbe allegare al tutti i dipendenti di un gruppo ? Mi piacerebbe normalmente andare per il primo esempio (un elemento di raggruppamento) in quanto ti dà la libertà di

  1. creare più gruppi
  2. collegare i dati al gruppo di nel suo complesso

E 'un po' più dettagliato, ma si compra una flessibilità molto di più andare avanti.

Per rispondere alla tua domanda con una domanda ... Come elementi non raggruppamento influenzano la leggibilità, sia visivamente che a livello di codice?

Il metodo raggruppati (con il <employees> e <buildings>) è più visiva.

Il metodo non raggruppato è un po 'più concisa per una query XPath, /company/employees/employee vs. /company/employee.

Quindi, può essere 6 di uno, mezza dozzina dell'altro.

Mi piacerebbe avvicino pensando a quali dati si sta rappresentando.

In C #, vedo questo:

// Top Example:
public class Company
{
  public Employee[] employees;
  public Building[] buildings;
}

// Vs. Bottom Example:
public Things[] employeesAndBuildings;

A rigor di logica, edifici e dipendenti non sono la stessa cosa. Dal momento che la società dispone di vari edifici e diversi dipendenti, si dovrebbe logicamente separare i due gruppi.

Il secondo esempio è più breve e seconda di ciò che sta leggendo il formato, il lettore può altrettanto facilmente separare i due articoli fuori. Per facilitare la lettura, però, il formato può ottenere più illeggibile quando le cose vanno in un ordine diverso:

<company>
    <employee />
    <building />
    <employee />
    <building />
    <employee />
</company>

Mi piacerebbe andare per il primo formato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top