【发布时间】:2011-02-23 09:56:58
【问题描述】:
继theseanswers之后,我决定使用xsd.exe和XmlSerializer作为解析XML的最简单方法。
但我想要一些改进:
- 我的首要要求是将
MyRoot.Time类型从long更改为DateTime。使用DateTime.FromFileTimeUtc或new DateTime可以通过代码轻松实现,但是可以直接通过XmlSerializer来实现吗? - 我能否将
MyRoot.Children类型更改为更复杂的类型,例如Dictionary<string,Tuple<int,ChildState>>?
我的 XML:
<Root timeUTC="129428675154617102">
<Child key="AAA" value="10" state="OK" />
<Child key="BBB" value="20" state="ERROR" />
<Child key="CCC" value="30" state="OK" />
</Root>
我的班级:
[XmlRoot]
[XmlType("Root")]
public class MyRoot
{
[XmlAttribute("timeUTC")]
public long Time { get; set; }
[XmlElement("Child")]
public MyChild[] Children{ get; set; }
}
[XmlType("Child")]
public class MyChild
{
[XmlAttribute("key")]
public string Key { get; set; }
[XmlAttribute("value")]
public int Value { get; set; }
[XmlAttribute("state")]
public ChildState State { get; set; }
}
public enum ChildState
{
OK,
BAD,
}
【问题讨论】:
-
我从风滚草中救了自己。亲爱的社区,您对#1 有更好的答案,对#2 有任何答案吗?或者,我应该接受自己的答案吗?
-
XML 序列化程序没有您想要的功能。如果您想要一种处理 XML 的简单方法,请查看 LINQ to XML。
标签: c# .net utc xmlserializer