如何获取此XmlAttribute

时间:2010-04-29 09:54:08

标签: c# xml rest musicbrainz

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

它产生序列化异常。我也尝试过使用“得分”,但它不起作用。

任何帮助?

2 个答案:

答案 0 :(得分:3)

属性名为“得分”,位于“ext”引用的名称空间中,可能是xml名称空间别名。

然后找到“ext”映射到的内容(查找xmlns),并添加:

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

编辑;发现它here;见xmlns:ext="http://example.org/ext-9.1#"。另请注意,主要对象似乎位于xmlns="http://musicbrainz.org/ns/mmd-1.0#"中,您可能需要在根/对象级别进行说明。

答案 1 :(得分:1)

extscore属性的命名空间。尝试指定命名空间:

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