Perché abbiamo bisogno di spazi dei nomi quando si effettua la serializzazione XML?

2

So che questa potrebbe essere una domanda molto semplice, ma sono nuovo alla serializzazione XML e ho passato ore a cercare di leggere pagine diverse.

PS: questa è una domanda indipendente dal linguaggio di programmazione.

    
posta AhmedWas 19.02.2016 - 10:27
fonte

2 risposte

6

Risposta semplice: non lo fai.

Se stai serializzando i dati come XML, devi concordare i dettagli del vocabolario XML con i consumatori dei dati. Forse lo definisci tu stesso, forse i tuoi consumatori lo definiscono, forse è definito da alcuni enti normativi. Qualunque sia il caso, chiunque definisca il vocabolario ha la possibilità di utilizzare i namespace o di non usarli. Alcuni progettisti XML utilizzano gli spazi dei nomi quando non sono realmente necessari. Possono essere utili se qualcuno vuole progettare documenti compositi che includono una combinazione di diversi vocabolari XML, ma ciò non accade spesso come le persone immaginano e molto spesso la complessità dell'utilizzo degli spazi dei nomi non raggiunge alcun vantaggio reale. D'altra parte, aiuta a rendere il tuo progetto a prova di futuro contro cambiamenti imprevisti nei requisiti futuri.

    
risposta data 19.02.2016 - 11:22
fonte
4

Per costruire la risposta di Michael, i namespace risolvono i conflitti. Quindi, se non hai conflitti, non ne hai bisogno.

Se avessi XML da due fonti:

Source 1:
<Foobar>
  <Name>Foo</Name>
</Foobar>
Source 2:
<Foobar>
  <FullName>Foo</FullName>
</Foobar>

Come posso determinare quale Foobar? Con namespace.

xmlns:a="http://www.fooOnMe.org/"
xmlns:b="http://www.fooOnU.org/"

   Source 1:
    <a:Foobar>
      <a:Name>Foo</a:Name>
    </a:Foobar>
    Source 2:
    <b:Foobar>
      <b:FullName>Foo</b:FullName>
    </b:Foobar>

La maggior parte delle volte, se l'XML proviene da una singola fonte, non sono richiesti spazi dei nomi perché non ci sono conflitti, ma la gente li usa comunque senza alcun effetto reale. In questo caso, è necessario includerli nelle query xPath, ecc. Oppure non verrà restituito nulla. Se stai componendo un documento XML da più fonti, è meglio includerle per evitare potenziali conflitti, ma si tratta di un caso d'uso distinto.

    
risposta data 19.02.2016 - 18:51
fonte

Leggi altre domande sui tag