Question

A partir du service MusicBrainz REST, je reçois le code XML suivant:

<artist-list offset="0" count="59">
  <artist type="Person" id="xxxxx" ext:score="100">
  ...

En utilisant WCF et XmlSerializationFormat, je suis en mesure d'obtenir les attributs de type et id ... mais comment puis-je obtenir le « poste: score »? Un

Cela fonctionne:

  public class Artist
  {
    [XmlAttribute("id")]
    public string ID { get; set; }

    [XmlAttribute("type")]
    public ArtistType Type { get; set; }

Mais cela ne marche pas:

[XmlAttribute("ext:score")]
public string Score { get; set; }

Il produit une exception sérialisation. J'ai aussi essayé juste en utilisant « score », mais il ne fonctionne pas.

Toute aide?

Était-ce utile?

La solution

L'attribut est nom "score", et se trouve dans l'espace de noms référencé par "poste", ce qui est probablement un alias d'espace de noms XML.

Donc, trouver ce "poste" correspond à (look pour un xmlns) et ajouter:

[XmlAttribute("score", Namespace="http://example.org/ext-9.1#")]
public string Score { get; set; }

Modifier; trouvé ; voir xmlns:ext="http://example.org/ext-9.1#". Notez également que les principaux objets semblent être xmlns="http://musicbrainz.org/ns/mmd-1.0#" que vous devrez peut-être compte au niveau racine / objet.

Autres conseils

Le ext est l'espace de noms de l'attribut score. Essayez de spécifier l'espace de noms:

[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top