2016-07-25 9 views
3

xmlファイルからオブジェクトを取得したい。私の例では、私は私がxsdからXMLをdeserializeするiso 20022 pain.001.001.03 c#

pain.001.001.03.xml

から

pain.001.001.03.xsd

とXMLファイルからスキーマをダウンロードしたISO 2002 pain.001.001.03

ISO 200022 pain.001.001.03

を使用しています

このツールを使用して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

答えて

4
<?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; 
} 
+0

に "(7、50)エルdocumentoのXMLエンエラー" 私は私のコードを変更して、それがこのメッセージを返します。内部例外は "{"ラウンドを返します。私はあなたが正しいものとしてあなたの答えをチェックする前にそれを修正しようとしています。 – EduardoUstarez

+0

@EduardoUstarez提供したリンクからドキュメントを直列化解除する際に問題はありませんでした。私はあなたが正確にクラスの定義を提供する場合は、問題を調べることができますし、xml(別のものを使用している場合)。 – Xiaoy312

+0

これは奇妙な問題のようです。 50行目のxmlは ' ABC/4562/2009-09-08'です。例外はフォーマットの問題があることを示していますが、 'string'(' PaymentIdentification1.endToEndIdField')に逆シリアル化されています。 – Xiaoy312

関連する問題