XSDを使用してXMLドキュメントを逆シリアル化しようとしています。私が得ているエラーは次のとおりです。
「XMLドキュメントにエラーがあります(22、8)。」
InnerException
です_
"入力文字列は、正しい形式ではありませんでした。"
これで、サンプルXMLドキュメントの22行目に次のようになりました。
<PremiumPaymentDate>2012-08-08</PremiumPaymentDate>
私が見る限り、それは何も悪いことではありません。XSDは、次のようにこの行を同様に指定します。
<xs:element name="PremiumPaymentDate" type="xs:date" minOccurs="0"/>
そして、マップしようとしているプロパティは次のようになります。
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")]
public System.DateTime PremiumPaymentDate {
get {
return this.premiumPaymentDateField;
}
set {
this.premiumPaymentDateField = value;
}
}
このフィールドを完全に削除し、XSDからコードファイルを再生成し、XSDを変更し、minOccurs
値を変更し、フィールドの形式を変更し、フィールドデータを完全に削除しようとしましたが、何も機能していません。
また、22行目まですべてが機能するのも不思議です。これは、このフィールドの約17フィールド上で正常に機能し、一部はまったく同じ方法で設定された日付であるためです。これは、何らかの理由で解析したくないだけです。
編集:
これらの日付は機能します。これらは、ドキュメント内の問題の日付より上です。動作するXSDは次のとおりです。
<xs:element name="effectivedate" type="xs:date" minOccurs="1"/>
同じもののサンプルXMLは次のとおりです。
<effectivedate>2012-06-08</effectivedate>
そしてそのコードプロパティ:
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")]
public System.DateTime effectivedate {
get {
return this.effectivedateField;
}
set {
this.effectivedateField = value;
}
}
何か案は?