كيفية تعيين عقدة الجذر اسم عند XmlSerializing المصفوفة ؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

لدي مجموعة من الأشياء التي أريد أن تسلسل مثل XML.هذه الكائنات هي مشروحة لوضع عقدة XML أسماء لكني كنت أتساءل كيف يمكن تعيين اسم XML عقدة الجذر.

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

// create list of items
List<ListItem> list = new List<ListItem>();
list.Add(new ListItem("A1", new Location(1, 2)));
list.Add(new ListItem("A2", new Location(2, 3)));
list.Add(new ListItem("A3", new Location(3, 4)));
list.Add(new ListItem("A4<&xyz>", new Location()));

// serialise
XmlSerializer ser = new XmlSerializer(typeof(ListItem[]));
FileStream os = new FileStream(@"d:\temp\seri.xml", FileMode.Create);
ser.Serialize(os, list.ToArray());
os.Close();

الإخراج يبدو مثل هذا:

<?xml version="1.0"?>
<ArrayOfPlace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Place>
    <Placename>A1</Placename>
    <Location>
      <Lat>1</Lat>
      <Long>2</Long>
    </Location>
  </Place>
  <Place>
  ...

عنصر القائمة تمت إعادة تسمية مكان باستخدام XmlElement الشرح ولكن كيف يمكنني تعيين اسم العقدة الجذر إلى إعادة تسمية 'ArrayOfPlace' العقدة?

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

المحلول

جرب هذا:

XmlSerializer ser = new XmlSerializer(
    typeof(ListItem[]), 
    new XmlRootAttribute("CustomRootName"));

نصائح أخرى

استخدام XmlRoot السمة.

فقط وجدت الحل بنفسي أيضا.

فمن الممكن وضع اسم عقدة الجذر عند إنشاء XmlSerializer.انظر أدناه.

XmlSerializer ser = new XmlSerializer(typeof(ListItem[]), new XmlRootAttribute("AllPlaces"));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top