Comment obtenir ce XmlAttribute
-
02-10-2019 - |
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?
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")]