كيفية استخدام. NET XML التسلسل بدون مخطط المضمون

StackOverflow https://stackoverflow.com/questions/1614717

  •  06-07-2019
  •  | 
  •  

سؤال

والأساس، ولدي بعض أكس أحتاج إلى إلغاء تسلسل. وفي الوقت أنا أكتب رمز بلادي، أنا أعرف بنية XML، ولكن أود أن تكون قادرة على إجراء تغييرات بسيطة لأكس دون الحاجة لتحديث رمز التسلسل.

مثال:

<foo>
  <bar/>
</foo>

وأود أن تكون قادرة على إلغاء تسلسل فو، حتى لو كنت إضافة عقدة الإضافية التي لم يتم تعريف في فئة تسلسل attibuted.

<foo>
  <bar/>
  <extra-tag/>
</foo>
هل كانت مفيدة؟

المحلول

إذا فهمت سؤالك بشكل صحيح وهذا ينبغي أن تعمل بشكل جيد.

ونظرا فئة:

[XmlRoot("foo")]
public class Foo
{
    [XmlElement("bar")]
    public string Bar;
    [XmlElement("extra-tag")]
    public string ExtraTag;
}

وبعد هذا الرمز يعمل على ما يرام:

string xml = 
@"<foo>
  <bar>bar</bar>
  <extra-tag>extra-tag</extra-tag>
</foo>";


XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo afoo = (Foo)serializer.Deserialize(new StringReader(xml));

ولكن إذا صفك يبدو مثل هذا:

[XmlRoot("foo")]
public class Foo
{
    [XmlElement("bar")]
    public string Bar;
}

ويستمر رمز للعمل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top