Come ottenere questo XmlAttribute
-
02-10-2019 - |
Domanda
Dal servizio MusicBrainz REST, ottengo il seguente codice XML:
<artist-list offset="0" count="59">
<artist type="Person" id="xxxxx" ext:score="100">
...
Utilizzando WCF e XmlSerializationFormat, sono in grado di ottenere il tipo e id attributi ... ma come faccio ad avere il "ext: punteggio"? Uno
Questo funziona:
public class Artist
{
[XmlAttribute("id")]
public string ID { get; set; }
[XmlAttribute("type")]
public ArtistType Type { get; set; }
Ma questo pretende molto:
[XmlAttribute("ext:score")]
public string Score { get; set; }
Produce un'eccezione serializzazione. Ho provato anche solo utilizzando "score", ma non funziona.
Qualsiasi aiuto?
Soluzione
L'attributo è nome "score", ed è nello spazio dei nomi a cui fa riferimento "ext", che è presumibilmente un alias xml namespace.
Quindi, trovare ciò che "ext" mappato a (cercare un xmlns), e aggiungere:
[XmlAttribute("score", Namespace="http://example.org/ext-9.1#")]
public string Score { get; set; }
Modifica; trovato qui ; vedi xmlns:ext="http://example.org/ext-9.1#"
. Si noti inoltre che gli oggetti principali sembrano essere in xmlns="http://musicbrainz.org/ns/mmd-1.0#"
che potrebbe essere necessario per tenere conto di al livello principale / oggetto.
Altri suggerimenti
Il ext
è il namespace dell'attributo score
. Provare a specificare lo spazio dei nomi:
[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]