C# 关于XmlSerializer的问题

C# 关于XmlSerializer的问题,c#,.net,xsd,xmlserializer,C#,.net,Xsd,Xmlserializer,这对我会更有帮助;如果你回答了以下问题 XmlSerializer是基于订单的吗? (例如) 我的class/XML如下所示。属性顺序已更改。 这仍然是序列化/反序列化吗 public class Movie { public string Title { get; set; } public int Rating { get; set; } } XML就像 <?xml version="1.0" encoding="utf-8"?>

这对我会更有帮助;如果你回答了以下问题

  • XmlSerializer是基于订单的吗? (例如) 我的class/XML如下所示。属性顺序已更改。 这仍然是序列化/反序列化吗

       public class Movie
       {
        public string Title  { get; set; }
        public int Rating    { get; set; }
       }
    
    XML就像

      <?xml version="1.0" encoding="utf-8"?>
      <Movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <Rating>6.9</Rating>
         <Title>Starship Troopers</Title>
      </Movie>
    


  • 克服Q2的方法之一



    对问题2的回答:您将获得一个InvalidOperationException

    反序列化过程中出错。最初的例外是 可使用InnerException属性使用

    请看这里:

    对问题3的答复:

    问题的解决方案是实现IXmlSerializable接口。这将允许您控制整个序列化过程。看看这篇codeproject文章——这是一个非常好的开始


    请参见此处:

    问题2的答案:您将获得一个InvalidOperationException

    反序列化过程中出错。最初的例外是 可使用InnerException属性使用

    请看这里:

    对问题3的答复:

    问题的解决方案是实现IXmlSerializable接口。这将允许您控制整个序列化过程。看看这篇codeproject文章——这是一个非常好的开始


    请参见此处:

    XmlSerializer不使用/要求(或保证?)兄弟元素的排序。这就是为什么我喜欢它胜过DataContractSerializer的原因之一,因为“人类可能会改变的事情”。另外,请在每篇文章中提出一个重点问题(也在标题中进行了总结)。@pst您能回答我的第二个问题吗?您应该研究DataContractSerializer,它更为现代,仍在积极开发中。XmlSerializer不是。@JohnSaunders我仍然认为DCS不适合“可能被人类改变的事情”(这是故意含糊的措辞,因为有人可能会认为人类错误地编辑了XML,并且只做很少的事情,比如改变元素顺序,就会使数据无效)-否则DCS会导致简单的序列化。据我所知,XmlSerializer也不是。它基于模式序列化和反序列化XML。我从未见过它接受无序的元素,例如,XmlSerializer不利用/要求(或保证?)兄弟元素的排序。这就是为什么我喜欢它胜过DataContractSerializer的原因之一,因为“人类可能会改变的事情”。另外,请在每篇文章中提出一个重点问题(也在标题中进行了总结)。@pst您能回答我的第二个问题吗?您应该研究DataContractSerializer,它更为现代,仍在积极开发中。XmlSerializer不是。@JohnSaunders我仍然认为DCS不适合“可能被人类改变的事情”(这是故意含糊的措辞,因为有人可能会认为人类错误地编辑了XML,并且只做很少的事情,比如改变元素顺序,就会使数据无效)-否则DCS会导致简单的序列化。据我所知,XmlSerializer也不是。它基于模式序列化和反序列化XML。例如,我从未见过它接受无序的元素。我的第3个问题与那个链接不同。它处理序列化,但我的案例反序列化,我不知道我得到的是哪个子类(根元素)??请帮忙。我的第三个问题与那个链接不同。它处理序列化,但我的案例反序列化,我不知道我得到的是哪个子类(根元素)??请帮忙。
     XmlSerializer ser = new XmlSerializer(typeof(B or C)); ??