Как получить этот XmlAttribute

#c# #xml #rest #musicbrainz

#c# #xml #rest #musicbrainz

Вопрос:

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

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

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

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

   public class Artist
  {
    [XmlAttribute("id")]
    public strin& ID { &et; set; }

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

Но это не:

 [XmlAttribute("ext:score")]
public strin& Score { &et; set; }
  

Это создает исключение сериализации. Я также пробовал просто использовать «score», но это не работает.

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

Ответ №1:

Атрибут имеет имя «score» и находится в пространстве имен, на которое ссылается «ext», что предположительно является псевдонимом пространства имен xml.

Итак, найдите, чему соответствует «ext» (найдите xmlns), и добавьте:

 [XmlAttribute("score", Namespace="http://example.or&/ext-9.1#")]
public strin& Score { &et; set; }
  

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

Ответ №2:

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

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