سؤال

من خدمة REST MusicBrainz ، أحصل على XML التالية:

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

باستخدام WCF و XMLSerializationFormat ، أنا قادر على الحصول على سمات النوع والمعرف ... ولكن كيف يمكنني الحصول على "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; }

ينتج استثناء التسلسل. لقد حاولت أيضًا استخدام "النتيجة" ، لكنها لا تعمل.

أي مساعدة؟

هل كانت مفيدة؟

المحلول

السمة هي اسم الشيئ "النتيجة" ، وهي في مساحة الاسم التي يشير إليها "تحويلة" ، والتي يُفترض أنها مستعار لمساحة اسم XML.

لذا ابحث عن خرائط "تحويلة" (ابحث عن 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