关于XmlSerializer的问题

时间:2012-12-11 19:02:07

标签: c# .net xsd xmlserializer

对我来说会更有帮助;如果你回答了下面的问题。

  1. XmlSerializer是基于订单的吗? 例如) 我的类/ 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>
    
  2. 反序列化过程中会发生什么;如果我的班级没有属性(例如标题),但xml有那个元素?

  3. 假设我有超类(A)和超类(A)的两个子类(B,C)。 在运行时,当我得到xml响应时,如何确定我应该在下面传递哪个对象?因为我不知道xml的RootElement(B或C)是什么?

     XmlSerializer ser = new XmlSerializer(typeof(B or C)); ??
    



  4. 一个 solution 克服Q2


1 个答案:

答案 0 :(得分:1)

回答问题2:您将收到InvalidOperationException。

  

反序列化期间发生错误。最初的例外是   可以使用InnerException属性。

见这里:msdn

回答问题3:

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

见这里:codeproject