序列化/反序列化XML数据时,XML元素和类属性是否具有相同的名称?

问题描述:

例如:序列化/反序列化XML数据时,XML元素和类属性是否具有相同的名称?

这是一个简单的类。

class Hero 
{ 
    public string faction; 
    public string name; 
    public HeroType herotype; 
} 

而这里的XML对口。

<Hero> 
    <android> 
     <Faction>evil</Faction> 
     <nombre>android</nombre> 
    </android> 
</Hero> 

执行属性必须正好以序列信息一样吗?

我的主要目的是用我的XML文件中的信息将信息“加载”到Hero类。

您可以使用[XmlElement(...)]修饰您的字段以指定替代名称。而且它们不必须按照相同的顺序。但是,您指定的Xml不适合您指定的类的结构。

修改您的XML是这样的:

<Hero> 
    <Name>android</Name> 
    <Faction>evil</Faction> 
    <HeroType>Agility</HeroType> 
</Hero> 

除非你指定(如阿维亚德P.说,由装饰属性与[XmlElement()]属性),在XML名称将精确地匹配属性名称,反之亦然。

排序应该是微不足道的。我说“应该”,因为是否它实际上微不足道取决于你设计班级的方式。

尽管在处理XML反序列化时,最重要的是让属性设置器无副作用,这是很好的做法。在反序列化期间,属性将按照它们在XML中出现的顺序设置为它们的值。

所以,如果你有这样的类:

public class Test 
{ 
    private string _Foo; 
    public string Foo { set { _Foo = value; _Baz="Foo"; } get { return _Foo; }} 

    private string _Bar; 
    public string Bar { set { _Bar = value; _Baz="Bar"; } get { return _Bar; }} 

    private string _Baz; 
    public string Baz { set { _Baz = value; } get { return _Baz; }} 
} 

然后XML在FooBar出现之前将设置Baz为“富”,而XML在其中BarFoo出现之前将设置Baz为“栏”。