2016-09-29 3 views
2

私はこのようなXMLが含まれている設定ファイルがあります。C#のXmlSerializer:デシリアライズ空のGUID値XMLファイルから

<XmlParameter Title="Analysis"> 
    <ProcedureName>XmlParameterAnalysisGetFirst</ProcedureName> 
    <ProcedureGroupId/> 
    <Returns>Table</Returns> 
    <Params> 
     <Param OrderKey="0" Name="xmlParameters">%xmlParameters%</Param> 
    </Params> 
</XmlParameter> 

私はタイプXmlParameterのオブジェクトに実行時にファイルをデシリアライズするXmlSerializerクラスを使用します。

public class XmlParameter { 
    [XmlAttribute] 
    public string Title { get; set; } 

    public string ProcedureName { get; set; } 

    [XmlElement(IsNullable=true)] 
    public Guid? ProcedureGroupId { get; set; } 

    public string Returns { get; set; } 

    public List<XmlCLRParam> Params { get; set; } 
} 

しかし、私は、このコードブロックを使用してファイルデシリアライズしよう:

var deserializer = new XmlSerializer(typeof(XmlParameter); 
var reader = new StreamReader(this.FilePath); 
var obj = deserializer.Deserialize(reader); 

System.InvalidOperationException

XML文書でエラーが発生しました。 ---> Sytem.Format.Exception:不明なGuid形式です。

私の質問は、XMLファイル

+1

問題を簡素化するために、null可能なGuidを代わりにGuid.Emptyを使用しないでください。これは0000-000と同じです...これは有効なGUIDではないので、チェックされても問題ありません。 –

答えて

3

のNullableは、xmlファイルには存在が存在しない場合はnull参照を取得しますPOCOフィールドを意味からnullable GUID値をデシリアライズする方法があるかどうかです...

あなたのxml誤ってフォーマットさを持っている:

< ProcedureGroupId />

:これを削除します
関連する問題