Вопрос

От службы отдыха Musicbrainz я получаю следующий XML:

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

Используя WCF и XMLSERializationFormat, я могу получить атрибуты типа и идентификатор ... Но как мне получить «EXT: BACT»?

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

  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; }

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

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

Это было полезно?

Решение

Атрибут есть название «Оценка» и находится в пространстве имен, на который ссылаются «Ext», что предполагается псевдоним пространства имен XML.

Так что найдите, какие «Ext» отображаются (ищите XMLNS), и добавьте:

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

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

Другие советы

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

[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top