我的XmlSerializer存在问题。我尝试反序列化此文件:
<MyClass Id="12">
<ProblemHere Value="8"/>
<OtherElement>0</OtherElement>
<fdp>NTM</fdp>
</MyClass>
在这堂课中:
[XmlType(TypeName = "MyClass")]
public class MyClass
{
[XmlAttribute(AttributeName = "Id")]
public int Id { get; set; }
//Here I try somes head but it's a failure
public int ProblemHere { get; set; }
public int OtherElement{ get; set; }
public string fdp{get; set}
}
正如您所理解的,我想要的是将ProblemHere
设置为其值(此处为8)。有没有简单的方法可以做到这一点,还是我必须创建一个ProblemHere
属性int Value
的类(对我来说似乎有点过分了)?
答案 0 :(得分:1)
据我所知,你必须创建一个单独的类。该属性命名为&#34; ProblemHere&#34;,但您希望该属性命名为&#34; value&#34; - 我不知道.Net中的任何属性都可以做到这一点。
我通常更喜欢让visual studio生成一个基础XSD(我稍后可以调整),然后使用xsd.exe为它生成一组(de)序列化类。
答案 1 :(得分:1)
是的,您必须创建一个类来表示数据的这个方面,即。
public class Foo {
[XmlAttribute]
public int Value {get;set;}
}
public Foo ProblemHere { get; set; }
这是XmlSerializer
与您想要的结构一起使用的唯一方式。
答案 2 :(得分:0)
你可以做这样的事情
private int _problem = 0;
public int ProblemHere { get {return _problem; } set { _problem = value; } }
不漂亮,但有效