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?

È stato utile?

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")]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top