[c#] सी # एक्सरे एक्सएमएल सीरियलाइजेशन



0 Answers

Question

मुझे सी # के एक्सएमएल सीरियलाइजेशन के साथ एक समस्या मिली। सीरिएलाइज़र का उत्पादन सामान्य Win32 और WinCE के बीच असंगत है (लेकिन आश्चर्यजनक रूप से WinCE में आईएमओ सुधारक आउटपुट है)। Win32 बस XmlRoot("c2") विशेषता को अनदेखा करता है।

क्या किसी को Win32 पर आउटपुट की तरह WinCE को कैसे प्राप्त किया जाए (क्योंकि मैं नहीं चाहता कि एक्सएमएल टैग को धारावाहिक वर्ग का वर्ग नाम हो)।

टेस्ट कोड:

using System;
using System.Xml.Serialization;
using System.IO;

namespace ConsoleTest
{
    [Serializable]
    [XmlRoot("c1")]
    public class Class1
    {
        [XmlArray("items")]
        public Class2[] Items;
    }

    [Serializable]
    [XmlRoot("c2")]
    public class Class2
    {
        [XmlAttribute("name")]
        public string Name;
    }

    class SerTest
    {
        public void Execute()
        {
            XmlSerializer ser = new XmlSerializer(typeof (Class1));

            Class1 test = new Class1 {Items = new [] {new Class2 {Name = "Some Name"}, new Class2 {Name = "Another Name"}}};

            using (TextWriter writer = new StreamWriter("test.xml"))
            {
                ser.Serialize(writer, test);
            }
        }
    }
}

अपेक्षित एक्सएमएल (विनसी इसे उत्पन्न करता है):

<?xml version="1.0" encoding="utf-8"?>
<c1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <items>
    <c2 name="Some Name" />
    <c2 name="Another Name" />
  </items>
</c1>

Win32 एक्सएमएल (गलत संस्करण प्रतीत होता है):

<?xml version="1.0" encoding="utf-8"?>
<c1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <items>
    <Class2 name="Some Name" />
    <Class2 name="Another Name" />
  </items>
</c1>





Related