كيفية الحصول على هذا xmlattribute
-
02-10-2019 - |
سؤال
من خدمة 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")]