c# - c# camt54 (iso 20022) 中的日期时间反序列化问题
问题描述
如果已经问过这个问题,我提前道歉,但我找不到任何可以帮助我理解如何解决问题的东西。
问题是,当试图反序列化特定银行的 camt54 时,我的程序出错了。调查问题后,我意识到反序列化器无法转换此标签:
<ToDtTm>2020-11-18T24:00:00+01:00</ToDtTm>
显然我明白为什么。C# datetime 格式不包括 24:00:00,调试器返回错误:“字符串 '2020-11-18T24:00:00+01:00' 不是有效的 AllXsd 值”
但从我对 xml 的理解来看,这是一个可接受的值。
不幸的是,这是发生在我身上的第一个案例。我已经反序列化了很多 camt54,直到现在还没有遇到任何问题。
如何告诉反序列化器正确读取插入到 xml 中的值?
先感谢您。马特奥。
解决方案
使用以下:
class Program
{
static void Main(string[] args)
{
string xml = "<root><ToDtTm>2020-11-18T24:00:00+01:00</ToDtTm></root>";
StringReader sReader = new StringReader(xml);
XmlReader xReader = XmlReader.Create(sReader);
XmlSerializer serializer = new XmlSerializer(typeof(root));
root root = (root)serializer.Deserialize(xReader);
}
}
public class root
{
public DateTime _ToDtTm { get; set; }
public String ToDtTm {
get {
return _ToDtTm.ToString(@"yyyy-MM-dd\Thh:mm:sszzz");
}
set {
string date = value.Replace("T24", "T00");
_ToDtTm = DateTime.Parse(date); }
}
}
推荐阅读
- laravel - SQLSTATE[HY000] [1698] 用户 'hadi'@'localhost' 的访问被拒绝
- post - 找到用于创建 ServiceNow 更改请求类型的正确 URL(EndPoint) 类型 = 紧急
- javascript - 如何在打字稿中声明 react-select 的道具?
- php - 如何在 PostgreSQL 中选择和排序提取的列
- python - 使用 agg 将 max 传递给 pandas df 会产生任意结果
- java - 复制 Jar 文件而不损坏
- python - 如何更改seaborn violinplot中内盒的颜色?
- caching - ubuntu - 无法运行 qtcreator 或其他程序
- php - 将程序代码转换为 Blob 的类
- google-tag-manager - Google Tag Manager - 帮助设置标签以跟踪播放按钮的点击次数和时间戳