C# XML 序列化中的 XML 元素位置

本文关键字:XML 元素 位置 序列化 | 更新日期: 2023-09-27 18:31:56

我正在尝试使用 XmlSerializer 类将这样的类序列化为 xml:

public class Car {
  public InsuranceData Insurance { get; set; } // InsuranceData is a class with many properties
  public int Person Owner { get; set; }
  public int Age { get; set; }
  public string Model { get; set; }
  // lots of other properties...
}

我想在 xml 文档的最后拥有保险属性:

<Car>
  ...
  <Insurance>
     ...
  </Insurance>
</Car>

我需要这样做,因为处理 xml 的服务器只能在这种布局中正常工作(我无法更改服务器代码)。我尝试将属性移动到类的末尾,但这没有任何区别,并且我没有找到与序列化相关的任何属性。我可以通过将 xml 作为字符串进行操作来解决此问题,但我更喜欢更优雅的解决方案。这些对象有很多属性,所以我不想手动创建 xml 字符串。

C# XML 序列化中的 XML 元素位置

以下是我为测试您的方案所做的工作:

        public static void Main(string[] args)
        {
            Insurance i = new Insurance();
            i.company = "State Farm";
            Car c = new Car();
            c.model = "Mustang";
            c.year = "2014";
            c.ins = i;
            XmlSerializer xs = new XmlSerializer(typeof(Car));
            StreamWriter sw = new StreamWriter("Car.xml");
            xs.Serialize(sw, c);
            sw.Close();
        }
        public class Car
        {
            public string model { get; set; }
            public string year { get; set; }
            public Insurance ins {get; set;}
        }
        public class Insurance
        {
            public string company { get; set; }
        }

。这是我的结果:

<?xml version="1.0" encoding="utf-8"?>
<Car xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <model>Mustang</model>
  <year>2014</year>
  <ins>
    <company>State Farm</company>
  </ins>
</Car>

希望这有帮助。