#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")]