如何将 long 类型的 XML 属性反序列化为 UTC DateTime?
遵循这些 答案,我决定使用 xsd.exe 和 XmlSerializer 作为解析 XML 的最简单方法。
但我想要一些改进:
- 我的首要请求是将
MyRoot.Time
类型从long
更改为DateTime
。它可以通过使用DateTime.FromFileTimeUtc 的代码轻松实现
或新日期时间
,但是可以直接用XmlSerializer来完成吗? - 我可以将
MyRoot.Children
类型更改为更复杂的类型,例如Dictionary
吗?>
我的 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,
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
答案仍然是相同的:XmlSerializer 不提供此类自定义。您可以对其他功能使用相同的技术,但是,它有点长......(XmlSerializer,正如您所说,简单,您应该考虑为此类自定义内容使用不同的序列化器。)
The answer is still the same: XmlSerializer does not offer such customization. You can use the same technique for the other feature, however, it is a bit longer… (XmlSerializer is, as you said, simple, you should consider different serializers for such custom stuff.)
我挖掘并在 两年前的答案,作者:Marc Gravell:
这是解决问题的公平方法#1. #2 仍然没有答案。
I dig up and found this method in a two years old answer by Marc Gravell♦:
This is a fair method that solve question #1. Still no answer on #2.