2

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

シリアル化例外が発生します。「スコア」だけを使ってみましたが、うまくいきません。

何か助けはありますか?

4

2 に答える 2

3

属性の名前は「score」で、「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#"また、メインオブジェクトは、ルート/オブジェクトレベルで説明する必要がある場合があることに注意してください。

于 2010-04-29T10:16:34.487 に答える
1

は属性extの名前空間です。score名前空間を指定してみてください。

[XmlAttribute(AttributeName="score", Namespace="the ext namespace")]
于 2010-04-29T10:19:55.163 に答える