C# 序列化/反序列化XML数据时,XML元素和类属性是否具有相同的名称?
例如: 这里有一个简单的类C# 序列化/反序列化XML数据时,XML元素和类属性是否具有相同的名称?,c#,xml,serialization,xml-serialization,C#,Xml,Serialization,Xml Serialization,例如: 这里有一个简单的类 class Hero { public string faction; public string name; public HeroType herotype; } 这里是XML对应物 <Hero> <android> <Faction>evil</Faction> <nombre>android</nombre> <
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>
安卓
邪恶的
敏捷性
您可以使用[XmlElement(…)]来修饰字段,以指定备用名称。此外,它们不必处于相同的顺序。但是,您指定的Xml不适合您指定的类的结构
将Xml修改为如下内容:
<Hero>
<Name>android</Name>
<Faction>evil</Faction>
<HeroType>Agility</HeroType>
</Hero>
安卓
邪恶的
敏捷性
除非您另有指定(正如Aviad p.所说,通过使用[xmlement()]
属性装饰属性),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; }}
}
然后
Foo
出现在Bar
之前的XML将Baz
设置为“Foo”,而Bar
出现在Foo
之前的XML将Baz
设置为“Bar” 除非您另外指定(正如Aviad p.所说,通过使用[xmlement()]
属性装饰属性),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; }}
}
然后Foo
出现在Bar
之前的XML将Baz
设置为“Foo”,而Bar
出现在Foo
之前的XML将Baz
设置为“Bar”