为什么有些 XML 标签没有被反序列化
Why are some XML tags not being deserialized
我使用了 XSD 提供的外部机制,使用 Xsd2Code 生成了一个 C# 代码库。每个 'vergunning' 和 'product' 在反序列化 XML 时都会加载,BeperkingAlgemeen 标记除外。我不知道如何操作生成的代码,以便在序列化 XML.
时包含 BeperkingAlgemeen
令我吃惊的是,重复的 BeperkingenAlgemeen 标签周围没有 'list/collection' 标签。
没有错误。结果 Vergunningen.Any(v => v.BeperkingenAlgemeen.Any()) 没有结果。
Xsd:
<xs:complexType name="Vergunning">
<xs:sequence>
<xs:element name="PDCs" nillable="true" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Product" nillable="true" minOccurs="0" maxOccurs="unbounded" type="Product">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BeperkingenAlgemeenenAlgemeen" type="BeperkingenAlgemeen" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Vergunningnummer" type="xs:string" use="required" />
<xs:attribute name="StartDatum" type="xs:date" use="optional" />
<xs:attribute name="EindDatum" type="xs:date" use="optional" /> </xs:complexType>
Xml
<Vergunningen>
<Vergunning Vergunningnummer="12045521" StartDatum="2018-03-16">
<PDCs>
<Product ProductID="9ae90fa7-b276-e311-95d7-005056be011c" Omschrijving="Vermogen">
<Dienst DienstID="fba1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Adviseren" StartDatum="2018-03-16" />
<Dienst DienstID="faa1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Bemiddelen" StartDatum="2018-03-16" />
</Product>
<Product ProductID="fb84d39b-b276-e311-894a-005056be011d" Omschrijving="Schadeverzekeringen particulier">
<Dienst DienstID="fba1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Adviseren" StartDatum="2018-03-16" />
<Dienst DienstID="faa1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Bemiddelen" StartDatum="2018-03-16" />
</Product>
</PDCs>
<Beleidsbepalers>
<Beleidsbepaler>
<Initialen />
<Tussenvoegsels />
<Achternaam>Dorreboom</Achternaam>
<MeisjesNaam />
<MeisjesTussenvoegsels />
</Beleidsbepaler>
</Beleidsbepalers>
<BeperkingenAlgemeen BeperkingID="FB60" StartDatum="1900-01-01">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB60" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB61" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met hypothecair krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB62" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met vermogen</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB46" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot schadeverzekeringen particulier is het uitsluitend toegestaan de financiële dienst te verrichten voor opstal- en inboedelverzekeringen in combinatie met hypothecair krediet.</Omschrijving>
</BeperkingenAlgemeen>
</Vergunning>
</Vergunningen>
生成的 C# 代码:
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Vergunning
{
private List<Product> _pDCs;
private List<Beperking> _beperkingenAlgemeen;
private string _vergunningnummer;
private System.Nullable<System.DateTime> _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlArrayAttribute(IsNullable=true, Order=0)]
public List<Product> PDCs
{
get
{
return this._pDCs;
}
set
{
this._pDCs = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("BeperkingenAlgemeenenAlgemeen", Order=1)]
public List<Beperking> BeperkingenAlgemeen
{
get
{
return this._beperkingenAlgemeen;
}
set
{
this._beperkingenAlgemeen = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Vergunningnummer
{
get
{
return this._vergunningnummer;
}
set
{
this._vergunningnummer = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime StartDatum
{
get
{
if (this._startDatum.HasValue)
{
return this._startDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool StartDatumSpecified
{
get
{
return this._startDatum.HasValue;
}
set
{
if (value==false)
{
this._startDatum = null;
}
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value==false)
{
this._eindDatum = null;
}
}
}
}
BeperkingAlgemeen
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Beperking
{
private string _omschrijving;
private string _beperkingID;
private System.DateTime _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public string Omschrijving
{
get
{
return this._omschrijving;
}
set
{
this._omschrijving = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string BeperkingID
{
get
{
return this._beperkingID;
}
set
{
this._beperkingID = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime StartDatum
{
get
{
return this._startDatum;
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value==false)
{
this._eindDatum = null;
}
}
}
}
多个问题,但这里最具体的是:
- 删除所有
Order = ...
位;他们错了,正在打破它
- xsd 和 xml 不同意;听起来 xml 应该是
<BeperkingenAlgemeenenAlgemeen>
- 命名空间不明确,您缺少根元素
但是;这有效:
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
static class P
{
static void Main()
{
var ser = new XmlSerializer(typeof(Vergunningen));
var v = (Vergunningen)ser.Deserialize(new StringReader(xml));
System.Console.WriteLine(v.Vergunning.Vergunningnummer);
System.Console.WriteLine(v.Vergunning.PDCs.Count);
System.Console.WriteLine(v.Vergunning.BeperkingenAlgemeen.Count);
}
const string xml = @"<Vergunningen>
<Vergunning Vergunningnummer=""12045521"" StartDatum=""2018-03-16"">
<PDCs>
<Product ProductID=""9ae90fa7-b276-e311-95d7-005056be011c"" Omschrijving=""Vermogen"">
<Dienst DienstID=""fba1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Adviseren"" StartDatum=""2018-03-16"" />
<Dienst DienstID=""faa1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Bemiddelen"" StartDatum=""2018-03-16"" />
</Product>
<Product ProductID=""fb84d39b-b276-e311-894a-005056be011d"" Omschrijving=""Schadeverzekeringen particulier"">
<Dienst DienstID=""fba1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Adviseren"" StartDatum=""2018-03-16"" />
<Dienst DienstID=""faa1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Bemiddelen"" StartDatum=""2018-03-16"" />
</Product>
</PDCs>
<Beleidsbepalers>
<Beleidsbepaler>
<Initialen />
<Tussenvoegsels />
<Achternaam>Dorreboom</Achternaam>
<MeisjesNaam />
<MeisjesTussenvoegsels />
</Beleidsbepaler>
</Beleidsbepalers>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB60"" StartDatum=""1900-01-01"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB60"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB61"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met hypothecair krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB62"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met vermogen</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB46"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot schadeverzekeringen particulier is het uitsluitend toegestaan de financiële dienst te verrichten voor opstal- en inboedelverzekeringen in combinatie met hypothecair krediet.</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
</Vergunning>
</Vergunningen>";
}
public class Vergunningen
{
public Vergunning Vergunning { get; set; }
}
public class Product { }
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
// [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Vergunning
{
private List<Product> _pDCs;
private List<Beperking> _beperkingenAlgemeen;
private string _vergunningnummer;
private System.Nullable<System.DateTime> _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlArrayAttribute(IsNullable = true)]
public List<Product> PDCs
{
get
{
return this._pDCs;
}
set
{
this._pDCs = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("BeperkingenAlgemeenenAlgemeen")]
public List<Beperking> BeperkingenAlgemeen
{
get
{
return this._beperkingenAlgemeen;
}
set
{
this._beperkingenAlgemeen = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Vergunningnummer
{
get
{
return this._vergunningnummer;
}
set
{
this._vergunningnummer = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime StartDatum
{
get
{
if (this._startDatum.HasValue)
{
return this._startDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool StartDatumSpecified
{
get
{
return this._startDatum.HasValue;
}
set
{
if (value == false)
{
this._startDatum = null;
}
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value == false)
{
this._eindDatum = null;
}
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
// [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Beperking
{
private string _omschrijving;
private string _beperkingID;
private System.DateTime _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlElementAttribute()]
public string Omschrijving
{
get
{
return this._omschrijving;
}
set
{
this._omschrijving = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string BeperkingID
{
get
{
return this._beperkingID;
}
set
{
this._beperkingID = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime StartDatum
{
get
{
return this._startDatum;
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value == false)
{
this._eindDatum = null;
}
}
}
}
我使用了 XSD 提供的外部机制,使用 Xsd2Code 生成了一个 C# 代码库。每个 'vergunning' 和 'product' 在反序列化 XML 时都会加载,BeperkingAlgemeen 标记除外。我不知道如何操作生成的代码,以便在序列化 XML.
时包含 BeperkingAlgemeen令我吃惊的是,重复的 BeperkingenAlgemeen 标签周围没有 'list/collection' 标签。
没有错误。结果 Vergunningen.Any(v => v.BeperkingenAlgemeen.Any()) 没有结果。
Xsd:
<xs:complexType name="Vergunning">
<xs:sequence>
<xs:element name="PDCs" nillable="true" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Product" nillable="true" minOccurs="0" maxOccurs="unbounded" type="Product">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BeperkingenAlgemeenenAlgemeen" type="BeperkingenAlgemeen" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Vergunningnummer" type="xs:string" use="required" />
<xs:attribute name="StartDatum" type="xs:date" use="optional" />
<xs:attribute name="EindDatum" type="xs:date" use="optional" /> </xs:complexType>
Xml
<Vergunningen>
<Vergunning Vergunningnummer="12045521" StartDatum="2018-03-16">
<PDCs>
<Product ProductID="9ae90fa7-b276-e311-95d7-005056be011c" Omschrijving="Vermogen">
<Dienst DienstID="fba1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Adviseren" StartDatum="2018-03-16" />
<Dienst DienstID="faa1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Bemiddelen" StartDatum="2018-03-16" />
</Product>
<Product ProductID="fb84d39b-b276-e311-894a-005056be011d" Omschrijving="Schadeverzekeringen particulier">
<Dienst DienstID="fba1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Adviseren" StartDatum="2018-03-16" />
<Dienst DienstID="faa1bc4a-e3fa-df11-bb5a-005056be6692" Omschrijving="Bemiddelen" StartDatum="2018-03-16" />
</Product>
</PDCs>
<Beleidsbepalers>
<Beleidsbepaler>
<Initialen />
<Tussenvoegsels />
<Achternaam>Dorreboom</Achternaam>
<MeisjesNaam />
<MeisjesTussenvoegsels />
</Beleidsbepaler>
</Beleidsbepalers>
<BeperkingenAlgemeen BeperkingID="FB60" StartDatum="1900-01-01">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB60" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB61" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met hypothecair krediet</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB62" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met vermogen</Omschrijving>
</BeperkingenAlgemeen>
<BeperkingenAlgemeen BeperkingID="FB46" StartDatum="2018-03-16">
<Omschrijving>Met betrekking tot schadeverzekeringen particulier is het uitsluitend toegestaan de financiële dienst te verrichten voor opstal- en inboedelverzekeringen in combinatie met hypothecair krediet.</Omschrijving>
</BeperkingenAlgemeen>
</Vergunning>
</Vergunningen>
生成的 C# 代码:
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Vergunning
{
private List<Product> _pDCs;
private List<Beperking> _beperkingenAlgemeen;
private string _vergunningnummer;
private System.Nullable<System.DateTime> _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlArrayAttribute(IsNullable=true, Order=0)]
public List<Product> PDCs
{
get
{
return this._pDCs;
}
set
{
this._pDCs = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("BeperkingenAlgemeenenAlgemeen", Order=1)]
public List<Beperking> BeperkingenAlgemeen
{
get
{
return this._beperkingenAlgemeen;
}
set
{
this._beperkingenAlgemeen = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Vergunningnummer
{
get
{
return this._vergunningnummer;
}
set
{
this._vergunningnummer = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime StartDatum
{
get
{
if (this._startDatum.HasValue)
{
return this._startDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool StartDatumSpecified
{
get
{
return this._startDatum.HasValue;
}
set
{
if (value==false)
{
this._startDatum = null;
}
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value==false)
{
this._eindDatum = null;
}
}
}
}
BeperkingAlgemeen
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Beperking
{
private string _omschrijving;
private string _beperkingID;
private System.DateTime _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public string Omschrijving
{
get
{
return this._omschrijving;
}
set
{
this._omschrijving = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string BeperkingID
{
get
{
return this._beperkingID;
}
set
{
this._beperkingID = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime StartDatum
{
get
{
return this._startDatum;
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType="date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value==false)
{
this._eindDatum = null;
}
}
}
}
多个问题,但这里最具体的是:
- 删除所有
Order = ...
位;他们错了,正在打破它 - xsd 和 xml 不同意;听起来 xml 应该是
<BeperkingenAlgemeenenAlgemeen>
- 命名空间不明确,您缺少根元素
但是;这有效:
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
static class P
{
static void Main()
{
var ser = new XmlSerializer(typeof(Vergunningen));
var v = (Vergunningen)ser.Deserialize(new StringReader(xml));
System.Console.WriteLine(v.Vergunning.Vergunningnummer);
System.Console.WriteLine(v.Vergunning.PDCs.Count);
System.Console.WriteLine(v.Vergunning.BeperkingenAlgemeen.Count);
}
const string xml = @"<Vergunningen>
<Vergunning Vergunningnummer=""12045521"" StartDatum=""2018-03-16"">
<PDCs>
<Product ProductID=""9ae90fa7-b276-e311-95d7-005056be011c"" Omschrijving=""Vermogen"">
<Dienst DienstID=""fba1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Adviseren"" StartDatum=""2018-03-16"" />
<Dienst DienstID=""faa1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Bemiddelen"" StartDatum=""2018-03-16"" />
</Product>
<Product ProductID=""fb84d39b-b276-e311-894a-005056be011d"" Omschrijving=""Schadeverzekeringen particulier"">
<Dienst DienstID=""fba1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Adviseren"" StartDatum=""2018-03-16"" />
<Dienst DienstID=""faa1bc4a-e3fa-df11-bb5a-005056be6692"" Omschrijving=""Bemiddelen"" StartDatum=""2018-03-16"" />
</Product>
</PDCs>
<Beleidsbepalers>
<Beleidsbepaler>
<Initialen />
<Tussenvoegsels />
<Achternaam>Dorreboom</Achternaam>
<MeisjesNaam />
<MeisjesTussenvoegsels />
</Beleidsbepaler>
</Beleidsbepalers>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB60"" StartDatum=""1900-01-01"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB60"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met consumptief krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB61"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met hypothecair krediet</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB62"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot inkomensverzekeringen is het uitsluitend toegestaan de financiële dienst te verrichten voor betalingsbeschermers (overlijdensrisico-, arbeidsongeschiktheids- en werkloosheidsverzekeringen) in combinatie met vermogen</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
<BeperkingenAlgemeenenAlgemeen BeperkingID=""FB46"" StartDatum=""2018-03-16"">
<Omschrijving>Met betrekking tot schadeverzekeringen particulier is het uitsluitend toegestaan de financiële dienst te verrichten voor opstal- en inboedelverzekeringen in combinatie met hypothecair krediet.</Omschrijving>
</BeperkingenAlgemeenenAlgemeen>
</Vergunning>
</Vergunningen>";
}
public class Vergunningen
{
public Vergunning Vergunning { get; set; }
}
public class Product { }
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
// [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Vergunning
{
private List<Product> _pDCs;
private List<Beperking> _beperkingenAlgemeen;
private string _vergunningnummer;
private System.Nullable<System.DateTime> _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlArrayAttribute(IsNullable = true)]
public List<Product> PDCs
{
get
{
return this._pDCs;
}
set
{
this._pDCs = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("BeperkingenAlgemeenenAlgemeen")]
public List<Beperking> BeperkingenAlgemeen
{
get
{
return this._beperkingenAlgemeen;
}
set
{
this._beperkingenAlgemeen = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Vergunningnummer
{
get
{
return this._vergunningnummer;
}
set
{
this._vergunningnummer = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime StartDatum
{
get
{
if (this._startDatum.HasValue)
{
return this._startDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool StartDatumSpecified
{
get
{
return this._startDatum.HasValue;
}
set
{
if (value == false)
{
this._startDatum = null;
}
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value == false)
{
this._eindDatum = null;
}
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
// [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.afm.nl/WfdExternRegister/Export/3.0")]
public partial class Beperking
{
private string _omschrijving;
private string _beperkingID;
private System.DateTime _startDatum;
private System.Nullable<System.DateTime> _eindDatum;
[System.Xml.Serialization.XmlElementAttribute()]
public string Omschrijving
{
get
{
return this._omschrijving;
}
set
{
this._omschrijving = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string BeperkingID
{
get
{
return this._beperkingID;
}
set
{
this._beperkingID = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime StartDatum
{
get
{
return this._startDatum;
}
set
{
this._startDatum = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime EindDatum
{
get
{
if (this._eindDatum.HasValue)
{
return this._eindDatum.Value;
}
else
{
return default(System.DateTime);
}
}
set
{
this._eindDatum = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EindDatumSpecified
{
get
{
return this._eindDatum.HasValue;
}
set
{
if (value == false)
{
this._eindDatum = null;
}
}
}
}