Rappresentazione canonica di un oggetto di classe contenente un elemento di lista in XML

1

Vedo che la maggior parte delle implementazioni di JAX-RS rappresentano un oggetto di classe che contiene un elenco di elementi come segue (si supponga che un class house contenga un elenco di persone)

<houses>
  <house>
    <person>
      <name>Adam</name>
    </person>
    <person>
      <name>Blake</name>
    </person>
  </house>
  <house>
  </house>
</houses>

Il risultato sopra riportato è ottenuto ad esempio dall'implementazione JAX-RS di Jersey 2, notice Jersey crea una "casa" di classe avvolgente attorno a ciascuna casa, ma stranamente non crea una classe di wrapper attorno a ogni persona! Non credo che si tratti di una mappatura corretta di un elenco, in altre parole mi sentirei più a mio agio con qualcosa del genere:

<houses>
  <house>
    <persons>
    <person>
      <name>Adam</name>
    </person>
    <person>
      <name>Blake</name>
    </person>
    </persons>
  </house>
  <house>
  </house>
</houses>

C'è qualche documento che spiega in che modo un oggetto dovrebbe essere mappato correttamente a prescindere da qualsiasi opnione?

    
posta dendini 18.10.2013 - 16:24
fonte

1 risposta

1

I documenti XML possono avere un solo nodo radice, quindi il <houses> è necessario se vuoi serializzare più di un <house> .

Un elemento <persons> non è necessario in quanto un nodo può contenere un numero qualsiasi di bambini con lo stesso nome di tag - possono essere disambiguati dalla posizione. Aggiunge complicazione senza aggiungere valore o struttura. Ma un tale raggruppamento può essere adeguato per es. quando abbiamo diversi tipi di abitanti nella nostra casa:

<house>
  <inhabitants>
    <human>
      <name>Larry</name>
    </human>
    <human>
      <name>Guido</name>
    </human>
    <dog>
      <name>Rasmus</name>
    </dog>
  </inhabitants>
</house>

Qui <inhabitants> codifica una relazione , mentre <human> e <dog> codifica un tipo .

    
risposta data 06.03.2014 - 20:55
fonte

Leggi altre domande sui tag