【发布时间】:2014-01-08 21:34:55
【问题描述】:
我刚刚学习了 C# 中的 XML 序列化。在弄清楚它的过程中,我偶然发现了一个奇怪的东西,想知道为什么。
如果我使用下面的代码,
[Serializable, XmlRoot("ThisIsTheRootName")]
public class Person
{
public string FirstName;
public string MiddleName;
public string LastName;
[XmlText]
public string Text;
}
我在序列化时得到这个输出:
<?xml version="1.0" encoding="IBM437"?>
<ThisIsTheRootName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>firstname</FirstName>
<MiddleName>middlename</MiddleName>
<LastName>lastname</LastName>This is some text</ThisIsTheRootName>
所有元素都按我预期的顺序排列。
如果我切换到使用属性而不是字段,突然顺序不是我所期望的。代码:
[Serializable, XmlRoot("ThisIsTheRootName")]
public class Person
{
public string FirstName;
public string MiddleName { get; set; }
public string LastName;
[XmlText]
public string Text;
}
输出:
<?xml version="1.0" encoding="IBM437"?>
<ThisIsTheRootName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>firstname</FirstName>
<LastName>lastname</LastName>This is some text<MiddleName>middlename</MiddleName></ThisIsTheRootName>
为什么顺序会改变?我应该更喜欢属性还是字段?有关系吗?
在 Windows 7 64 位上使用 Visual Studio 2010、C#、.NET 4.0 框架。
【问题讨论】:
-
没有回答您的实际问题,但您可以使用
[XmlElement(Order=1)]强制订购...
标签: c# xml-serialization