Cómo conseguir este XmlAttribute
-
02-10-2019 - |
Pregunta
Desde el servicio MusicBrainz REST, me sale el siguiente XML:
<artist-list offset="0" count="59">
<artist type="Person" id="xxxxx" ext:score="100">
...
El uso de WCF y XmlSerializationFormat, soy capaz de obtener los atributos de texto e id ... pero ¿Cómo consigo la "ext: puntuación"? Uno
Estos trabajos:
public class Artist
{
[XmlAttribute("id")]
public string ID { get; set; }
[XmlAttribute("type")]
public ArtistType Type { get; set; }
Sin embargo, ésto no:
[XmlAttribute("ext:score")]
public string Score { get; set; }
Se produce una excepción de serialización. También he intentado usar sólo "puntuación", pero no funciona.
Cualquier ayuda?
Solución
El atributo es nombre "puntuación", y está en el espacio de nombres al que hace referencia "ext", que presumiblemente es un alias XML espacio de nombres.
Así que encontrar lo "ext" se asigna a (buscar una xmlns), y añadir:
[XmlAttribute("score", Namespace="http://example.org/ext-9.1#")]
public string Score { get; set; }
Editar; encontrado aquí ; ver xmlns:ext="http://example.org/ext-9.1#"
. También tenga en cuenta que los principales objetos parecen estar en xmlns="http://musicbrainz.org/ns/mmd-1.0#"
que puede necesitar para tener en cuenta en el nivel raíz / objeto.
Otros consejos
El ext
es el espacio de nombres del atributo score
. Intente especificar el espacio de nombres:
[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]