Как получить этот XmlAttribute - PullRequest
2 голосов
/ 29 апреля 2010

Из службы MusicBrainz REST я получаю следующий xml:

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

Используя WCF и XmlSerializationFormat, я могу получить атрибуты type и id ... но как мне получить "ext: score" один?

Это работает:

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

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

Но это не так:

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

Создает исключение сериализации. Я также пытался просто использовать "Score", но это не работает.

Любая помощь?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2010

Атрибут с именем"оценка" и находится в пространстве имен, на которое ссылается "ext", который предположительно является псевдонимом пространства имен xml.

Итак, найдите, что "ext" отображает (ищите xmlns), и добавьте:

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

Edit; нашел его здесь ; см xmlns:ext="http://example.org/ext-9.1#". Также обратите внимание, что основные объекты находятся в xmlns="http://musicbrainz.org/ns/mmd-1.0#", который вам, возможно, придется учитывать на уровне корня / объекта.

1 голос
/ 29 апреля 2010

ext - это пространство имен атрибута score. Попробуйте указать пространство имен:

[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]
...