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?

¿Fue útil?

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")]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top