kno*_*ten 1 c# xml-serialization
这段代码没有给出建议的结果,因为元素的顺序没有按照指定的顺序出现:
using System;
using System.IO;
using System.Xml.Serialization;
namespace XmlSerializeTest
{
class Program
{
static void Main(string[] args) {
SubClass test = new SubClass();
test.A = "A";
test.B = "B";
test.C = "C";
XmlSerializer SerializerObj = new XmlSerializer(typeof(SubClass));
TextWriter WriteFileStream = new StreamWriter(@"C:\test.xml");
SerializerObj.Serialize(WriteFileStream, test);
WriteFileStream.Close();
}
}
[Serializable()]
public class BaseClass {
[XmlElement(Order = 2)]
public string B { get; set; }
}
[Serializable()]
public class SubClass : BaseClass {
[XmlElement(Order = 1)]
public string A { get; set; }
[XmlElement(Order = 3)]
public string C { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
它给出以下结果:
<BaseClass>
<B>B</B>
<A>A</A>
<C>C</C>
</BaseClass>
Run Code Online (Sandbox Code Playgroud)
如何获得正确的订单(A,B,C)?
我也尝试过这些替代方法:
new XmlSerializer(typeof(BaseClass), new [] {typeof(SubClass)});
new XmlSerializer(typeof(SubClass), new [] {typeof(BaseClass)});
Run Code Online (Sandbox Code Playgroud)
小智 6
默认.NET DataContractSerializer按以下顺序序列化数据成员:
有关更多详细信息,请参见MSDN。
如果您想要其他行为,则必须实现从XmlObjectSerializer继承的自己的数据序列化程序。-看一下这个帖子。
编辑/注意:
XmlSerializer和DataContractSerializer使用类似的顺序。除非您需要完全控制xml格式,否则我将改用DataContractSerializer。请参阅此博客文章。
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |