微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML使用c#从xsd反序列化iso 20022 pain.001.001.03

我想从xml文件获取一个对象.在我的例子中,我使用iso 2002 pain.001.001.03

ISO 200022 pain.001.001.03

我已经从中下载了架构

pain.001.001.03.xsd

和来自的xml文件

pain.001.001.03.xml

我已使用此工具对xsd验证了我的xml

Validate XML

我使用xsd生成一个

enter image description here

我正在使用下面的代码来反序列化

XmlSerializer ser = new XmlSerializer(typeof(CustomerCreditTransferInitiationV03),new XmlRootAttribute                             
                     { 
                         ElementName = "Document",Namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03",});


           FileStream myFileStream = new FileStream("C:\\001.001.03\\pain.001.001.03.xml",FileMode.Open);

           CustomerCreditTransferInitiationV03 myObject = (CustomerCreditTransferInitiationV03) ser.Deserialize(myFileStream);

代码返回null值,但我的xml有值

enter image description here

解决方法

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>

根元素是Document,而不是CstmrCdtTrfInitn:

var serializer = new XmlSerializer(typeof(Document));
using (var file = File.OpenRead(path))
{
    var document = (Document)serializer.Deserialize(file);
    var transfer = document.CstmrCdtTrfInitn;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。