0
방금 C#에서 XML 직렬화를 선택했습니다. 그것을 알아내는 과정에서 나는 이상한 것을 발견하고 이유를 알고 싶었습니다. 나는 다음과 같은 코드를 사용하는 경우왜 System.Xml.Serialization 출력 순서가 변경됩니까
,
[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)]'을 사용하여 명령을 강제 할 수 있습니다 ... – Filburt