【问题标题】:No value when deserialize XML document反序列化 XML 文档时没有值
【发布时间】:2016-04-07 04:01:51
【问题描述】:

我有以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfFolkbokforingspostTYPE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>235235263</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
        <Fornamn>dsgsgdsd</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>sdgsdg</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20060512</Folkbokforingsdatum>
        <LanKod>25</LanKod>
        <KommunKod>14</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>gsdgsgds</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>sgsdgs</Utdelningsadress2>
          <PostNr>325325</PostNr>
          <Postort>lalalal</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>235</FastighetsId>
          <AdressplatsId>2355325</AdressplatsId>
          <LagenhetsId>35235</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>25</FodelselanKod>
          <Fodelseforsamling>NEDERKALIX</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
</ArrayOfFolkbokforingspostTYPE>

并且想反序列化它,但我没有得到价值。

这里是反序列化类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace TESTMAPPNING2
{


        [XmlRoot("ArrayOfFolkbokforingspostTYPE")]
        public class Information
        {

            [XmlElement("Sekretessmarkering")]
            public string ProtectedIdentity
            {
                get;
                set;
            }
            [XmlElement("PersonNr")]
            public string PersonalIdentityNumber
            {
                get;
                set;
            }

            [XmlRoot("Personpost")]
            public class Personpost
            {
                [XmlRoot("PersonId")]
                public class PersonId
                {
                    [XmlElement("PersonNr")]
                    public string PersonalIdentityNumber
                    {
                        get;
                        set;
                    }


                }
                [XmlElement("HanvisningsPersonNr")]
                public string ReferedCivicRegistrationNumber
                {
                    get;
                    set;
                }
                [XmlRoot("Namn")]
                public class Namn
                {

                    [XmlElement("Tilltalsnamnsmarkering")]
                    public string GivenNameNumber
                    {
                        get;
                        set;
                    }

                    [XmlElement("Fornamn")]
                    public string FirstName
                    {
                        get;
                        set;
                    }

                    [XmlElement("Efternamn")]
                    public string LastName
                    {
                        get;
                        set;
                    }

                    [XmlElement("Aviseringsnamn")]
                    public string NotifyName
                    {
                        get;
                        set;
                    }

                }
                [XmlRoot("Folkbokforing")]
                public class Folkbokforing
                {
                    [XmlElement("Folkbokforingsdatum")]
                    public string NotifyName
                    {
                        get;
                        set;
                    }

                    [XmlElement("LanKod")]
                    public string NationalRegistrationCountyCode
                    {
                        get;
                        set;
                    }

                    [XmlElement("KommunKod")]
                    public string NationalRegistrationMunicipalityCode
                    {
                        get;
                        set;
                    }

                }
                [XmlRoot("Adresser")]
                public class Adresser
                {
                    [XmlRoot("Folkbokforingsadress")]
                    public class Folkbokforingsadress
                    {

                        [XmlElement("CareOf")]
                        public string NationalRegistrationCoAddress
                        {
                            get;
                            set;
                        }

                        [XmlElement("Utdelningsadress1")]
                        public string NationalRegistrationDistributionAddress1
                        {
                            get;
                            set;
                        }

                        [XmlElement("Utdelningsadress2")]
                        public string NationalRegistrationDistributionAddress2
                        {
                            get;
                            set;
                        }

                        [XmlElement("PostNr")]
                        public string NationalRegistrationPostCode
                        {
                            get;
                            set;
                        }

                        [XmlElement("Postort")]
                        public string NationalRegistrationCity
                        {
                            get;
                            set;
                        }
                    }
                }
                [XmlRoot("Fodelse")]
                public class Fodelse
                {
                    [XmlRoot("HemortSverige")]
                    public class HemortSverige
                    {
                        [XmlElement("FodelselanKod")]
                        public string BirthCountyCode
                        {
                            get;
                            set;
                        }

                        [XmlElement("Fodelseforsamling")]
                        public string BirthParish
                        {
                            get;
                            set;
                        }
                    }
                }
                [XmlRoot("Medborgarskap")]
                public class Medborgarskap
                {
                    [XmlElement("MedborgarskapslandKod")]
                    public string CitizenshipCode
                    {
                        get;
                        set;
                    }

                    [XmlElement("Medborgarskapsdatum")]
                    public string CitizenshipDate
                    {
                        get;
                        set;
                    }
                }

            }

        }
    }

这里是主类:

namespace TESTMAPPNING2
{
    public class Program
    {
       public static void Main(string[] args)
        {
            Test();
        }


        public static void Test()
    {
        try
        {
            XmlSerializer XmlSerializer = new XmlSerializer(typeof(Information));
            StreamReader sr = new StreamReader("navetout.xml");
            Information information = (Information)XmlSerializer.Deserialize(sr);
            Console.WriteLine("Information:");
            Console.WriteLine("Personnummer:" + information.PersonalIdentityNumber);
            Console.ReadKey(); 
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadKey();
        }

    }

我试图显示PersonalIdentityNumber 只是为了尝试一下,但它没有得到它的价值。所有控制台正在打印的是

信息:

人名:

为什么它没有在 XML 中获取 PersonalIdentityNumber?(PersonNr) 的值。

更新 2

我的整个 XML:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfFolkbokforingspostTYPE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PersonNr>194903188953</PersonNr>
<FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>194903188953</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
        <Fornamn>Erik Lennart</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Enberg</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20060512</Folkbokforingsdatum>
        <LanKod>25</LanKod>
        <KommunKod>14</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>PÅLÄNGE 6:38</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>STORVÄGEN 65</Utdelningsadress2>
          <PostNr>95204</PostNr>
          <Postort>PÅLÄNG</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>250015520</FastighetsId>
          <AdressplatsId>2416233</AdressplatsId>
          <LagenhetsId>22143838</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>25</FodelselanKod>
          <Fodelseforsamling>NEDERKALIX</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <TilldelatPersonNrSamordningsNr>195405869370</TilldelatPersonNrSamordningsNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Fornamn styrkt="J">Eduardo Metran</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn styrkt="J">Garcia</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum xsi:nil="true" />
        <LanKod>14</LanKod>
        <KommunKod xsi:nil="true" />
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning xsi:nil="true" />
      </Folkbokforing>
      <Adresser />
      <Fodelse>
        <OrtUtlandet>
          <FodelseortUtland styrkt="J">Sta Cruz Zambales</FodelseortUtland>
          <Fodelseland>FILIPPINERNA</Fodelseland>
        </OrtUtlandet>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod styrkt="J">PH</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>199103274545</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Fornamn>Sarah Dina Tomasdotter</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Själander</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20120123</Folkbokforingsdatum>
        <LanKod>01</LanKod>
        <KommunKod>80</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>SLALOMSVÄNGEN 3</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>STÖRTLOPPSVÄGEN 18 LGH 1102</Utdelningsadress2>
          <PostNr>12947</PostNr>
          <Postort>HÄGERSTEN</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>010114422</FastighetsId>
          <AdressplatsId>1463872</AdressplatsId>
          <LagenhetsId>24865059</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>01</FodelselanKod>
          <Fodelseforsamling>SPÅNGA</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>197111041617</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>10</Tilltalsnamnsmarkering>
        <Fornamn>Kristian Fredrik</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Lahtinen</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20110524</Folkbokforingsdatum>
        <LanKod>04</LanKod>
        <KommunKod>84</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>HÖJDHOPPAREN 3</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>SÄBYGATAN 22 C LGH 1102</Utdelningsadress2>
          <PostNr>64434</PostNr>
          <Postort>TORSHÄLLA</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>040044272</FastighetsId>
          <AdressplatsId>1982769</AdressplatsId>
          <LagenhetsId>22271866</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>04</FodelselanKod>
          <Fodelseforsamling>TORSHÄLLA</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>FI</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>198208268220</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>10</Tilltalsnamnsmarkering>
        <Fornamn>Ida Margareta</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Kruth</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20131101</Folkbokforingsdatum>
        <LanKod>23</LanKod>
        <KommunKod>80</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>FRITZHEM 17</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>TRÄDGÅRDSVÄGEN 7 A</Utdelningsadress2>
          <PostNr>83243</PostNr>
          <Postort>FRÖSÖN</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>230105629</FastighetsId>
          <AdressplatsId>2788100</AdressplatsId>
          <LagenhetsId>22480810</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>23</FodelselanKod>
          <Fodelseforsamling>RÄTAN</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>197707145590</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
        <Fornamn>Bobby Sebastian Ari Roy</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Eklund</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20150915</Folkbokforingsdatum>
        <LanKod>14</LanKod>
        <KommunKod>89</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>JÄRTA 4</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>KUNGSGATAN 41 C LGH 1201</Utdelningsadress2>
          <PostNr>44131</PostNr>
          <Postort>ALINGSÅS</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>140856107</FastighetsId>
          <AdressplatsId>6170819</AdressplatsId>
          <LagenhetsId>6251962</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>55</FodelselanKod>
          <Fodelseforsamling>KULLINGS-SK</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>195907184930</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>12</Tilltalsnamnsmarkering>
        <Fornamn>Nils-Arne</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Hellberg</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>19951002</Folkbokforingsdatum>
        <LanKod>14</LanKod>
        <KommunKod>35</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>MYREN 1:24</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>OLJESKÄR 19</Utdelningsadress2>
          <PostNr>45797</PostNr>
          <Postort>RESÖ</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>140255902</FastighetsId>
          <AdressplatsId>12613307</AdressplatsId>
          <LagenhetsId>24298880</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>54</FodelselanKod>
          <Fodelseforsamling>LUR</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>197002140098</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Fornamn>Robert Daniel</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Juhlin</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20131102</Folkbokforingsdatum>
        <LanKod>01</LanKod>
        <KommunKod>80</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>TRÄNGKÅREN 3</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>RÅLAMBSVÄGEN 19 LGH 1102</Utdelningsadress2>
          <PostNr>11259</PostNr>
          <Postort>STOCKHOLM</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>010129327</FastighetsId>
          <AdressplatsId>1447909</AdressplatsId>
          <LagenhetsId>24809951</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>01</FodelselanKod>
          <Fodelseforsamling>HUSBY-ÄRL.</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>195902134815</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
        <Fornamn>Hans Peter</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Hultman</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20130809</Folkbokforingsdatum>
        <LanKod>13</LanKod>
        <KommunKod>82</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>SLÄRYD 1:19</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>SLÄRYD 122</Utdelningsadress2>
          <PostNr>31161</PostNr>
          <Postort>ULLARED</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>130150999</FastighetsId>
          <AdressplatsId>11291263</AdressplatsId>
          <LagenhetsId>22077220</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>54</FodelselanKod>
          <Fodelseforsamling>MÖLNDAL</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
  <FolkbokforingspostTYPE>
    <Sekretessmarkering xsi:nil="true" />
    <Personpost>
      <PersonId>
        <PersonNr>197306235057</PersonNr>
      </PersonId>
      <HanvisningsPersonNr xsi:nil="true" />
      <Namn>
        <Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
        <Fornamn>Carl Fredrik</Fornamn>
        <Mellannamn xsi:nil="true" />
        <Efternamn>Lundin</Efternamn>
        <Aviseringsnamn xsi:nil="true" />
      </Namn>
      <Folkbokforing>
        <Folkbokforingsdatum>20111201</Folkbokforingsdatum>
        <LanKod>12</LanKod>
        <KommunKod>82</KommunKod>
        <ForsamlingKod xsi:nil="true" />
        <Fastighetsbeteckning>OSCAR II 31</Fastighetsbeteckning>
        <FiktivtNr>0</FiktivtNr>
      </Folkbokforing>
      <Adresser>
        <Folkbokforingsadress>
          <CareOf xsi:nil="true" />
          <Utdelningsadress1 xsi:nil="true" />
          <Utdelningsadress2>FÖRENINGSGATAN 45</Utdelningsadress2>
          <PostNr>26136</PostNr>
          <Postort>LANDSKRONA</Postort>
        </Folkbokforingsadress>
        <Riksnycklar>
          <FastighetsId>120291075</FastighetsId>
          <AdressplatsId>1748543</AdressplatsId>
          <LagenhetsId>24233009</LagenhetsId>
        </Riksnycklar>
      </Adresser>
      <Fodelse>
        <HemortSverige>
          <FodelselanKod>54</FodelselanKod>
          <Fodelseforsamling>GREBBESTAD</Fodelseforsamling>
        </HemortSverige>
      </Fodelse>
      <Medborgarskap>
        <MedborgarskapslandKod>SE</MedborgarskapslandKod>
        <Medborgarskapsdatum>0</Medborgarskapsdatum>
      </Medborgarskap>
    </Personpost>
  </FolkbokforingspostTYPE>
</ArrayOfFolkbokforingspostTYPE>

【问题讨论】:

    标签: c# xml deserialization


    【解决方案1】:

    您的 XML 根节点是一个 ArrayOfFolkbokforingspostTYPE,然后包含一个 FolkbokforingspostTYPE

    但是您的反序列化类没有定义FolkbokforingspostTYPE,只有根ArrayOfFolkbokforingspostTYPE

    您可以使用特殊的粘贴功能在 Visual Studio 中自动创建反序列化类。查看this MSDN 链接。

    Here's 在我使用你的 XML 之后我的 VS 生成了什么。

    检查here的使用情况。

    编辑:我已经更新了两个代码示例。我提供的初始代码示例适用于您在原始问题中提供的 XML。更新后的 XML 有一个稍微不同的反序列化类,这仍然很重要。新的代码示例适用于您问题中更新的 XML。

    【讨论】:

    • @HenkHolterman 不管什么原因,定义与 XML 不匹配。
    • @Shaamaan 我试过了,但它不起作用。如果我将它粘贴到我的反序列化类中,我无法从该类中获得任何值。
    • @Simon.S 你显然做错了什么。我可以反序列化对象并毫无问题地获取值。检查我添加到 PasteBin 的代码。它假定已按照 MSDN 链接中的说明创建了反序列化类(我没有更改名称)。
    • @Shaamaan 我尝试了代码并得到错误There is an error in XML document (9, 9).
    • @Simon.S 它不起作用的原因是因为您没有发布完整的 XML。虽然我确实假设 XML 将包含多个节点,但您最初发布的示例没有,并且我的代码解析它没有问题。我已经使用您更新问题中的 XML 数据更新了代码示例。
    【解决方案2】:

    试试这个....

    用途

    using System;
    using System.Collections.Generic;
    using System.Xml.Serialization;
    using System.IO;
    using System.Linq;
    

    代码.... 将以下代码复制并粘贴到您的控制台应用程序中....

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
    
                List<FolkbokforingspostTYPE> deserializedList = new List<FolkbokforingspostTYPE>();
                deserializedList = Deserialize<List<FolkbokforingspostTYPE>>();
    
                var PersonalIdentityNumber = deserializedList.Select(item => item.Personpost.PersonId.PersonNr).FirstOrDefault();
                Console.WriteLine("Personnummer: " + PersonalIdentityNumber);
            }// Put a break-point here, then mouse-over PersonalIdentityNumber...  deserializedList contains everything if you need it
            catch (Exception)
            {
    
                throw;
            }
            Console.ReadKey();
        }
    
        private static T Deserialize<T>() where T : new()
        {
            // Create an instance of T
            T ReturnListOfT = CreateInstance<T>();
    
    
            // Create a new file stream for reading the XML file
            using (FileStream ReadFileStream = new FileStream("xml.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                // Construct a XmlSerializer and use it  
                // to serialize the data from the stream.
                XmlSerializer SerializerObj = new XmlSerializer(typeof(T));
                try
                {
                    // Deserialize the hashtable from the file
                    ReturnListOfT = (T)SerializerObj.Deserialize(ReadFileStream);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(string.Format("Failed to serialize. Reason: {0}", ex.Message));
                }
    
            }
            // return the Deserialized data.
            return ReturnListOfT;
        }
    
        // function to create instance of T
        public static T CreateInstance<T>() where T : new()
        {
            return (T)Activator.CreateInstance(typeof(T));
        }
    }
    
    [XmlRoot(ElementName = "Sekretessmarkering")]
    public class Sekretessmarkering
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "PersonId")]
    public class PersonId
    {
        [XmlElement(ElementName = "PersonNr")]
        public string PersonNr { get; set; }
    }
    
    [XmlRoot(ElementName = "HanvisningsPersonNr")]
    public class HanvisningsPersonNr
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Mellannamn")]
    public class Mellannamn
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Aviseringsnamn")]
    public class Aviseringsnamn
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Namn")]
    public class Namn
    {
        [XmlElement(ElementName = "Tilltalsnamnsmarkering")]
        public string Tilltalsnamnsmarkering { get; set; }
        [XmlElement(ElementName = "Fornamn")]
        public string Fornamn { get; set; }
        [XmlElement(ElementName = "Mellannamn")]
        public Mellannamn Mellannamn { get; set; }
        [XmlElement(ElementName = "Efternamn")]
        public string Efternamn { get; set; }
        [XmlElement(ElementName = "Aviseringsnamn")]
        public Aviseringsnamn Aviseringsnamn { get; set; }
    }
    
    [XmlRoot(ElementName = "ForsamlingKod")]
    public class ForsamlingKod
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Folkbokforing")]
    public class Folkbokforing
    {
        [XmlElement(ElementName = "Folkbokforingsdatum")]
        public string Folkbokforingsdatum { get; set; }
        [XmlElement(ElementName = "LanKod")]
        public string LanKod { get; set; }
        [XmlElement(ElementName = "KommunKod")]
        public string KommunKod { get; set; }
        [XmlElement(ElementName = "ForsamlingKod")]
        public ForsamlingKod ForsamlingKod { get; set; }
        [XmlElement(ElementName = "Fastighetsbeteckning")]
        public string Fastighetsbeteckning { get; set; }
        [XmlElement(ElementName = "FiktivtNr")]
        public string FiktivtNr { get; set; }
    }
    
    [XmlRoot(ElementName = "CareOf")]
    public class CareOf
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Utdelningsadress1")]
    public class Utdelningsadress1
    {
        [XmlAttribute(AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
        public string Nil { get; set; }
    }
    
    [XmlRoot(ElementName = "Folkbokforingsadress")]
    public class Folkbokforingsadress
    {
        [XmlElement(ElementName = "CareOf")]
        public CareOf CareOf { get; set; }
        [XmlElement(ElementName = "Utdelningsadress1")]
        public Utdelningsadress1 Utdelningsadress1 { get; set; }
        [XmlElement(ElementName = "Utdelningsadress2")]
        public string Utdelningsadress2 { get; set; }
        [XmlElement(ElementName = "PostNr")]
        public string PostNr { get; set; }
        [XmlElement(ElementName = "Postort")]
        public string Postort { get; set; }
    }
    
    [XmlRoot(ElementName = "Riksnycklar")]
    public class Riksnycklar
    {
        [XmlElement(ElementName = "FastighetsId")]
        public string FastighetsId { get; set; }
        [XmlElement(ElementName = "AdressplatsId")]
        public string AdressplatsId { get; set; }
        [XmlElement(ElementName = "LagenhetsId")]
        public string LagenhetsId { get; set; }
    }
    
    [XmlRoot(ElementName = "Adresser")]
    public class Adresser
    {
        [XmlElement(ElementName = "Folkbokforingsadress")]
        public Folkbokforingsadress Folkbokforingsadress { get; set; }
        [XmlElement(ElementName = "Riksnycklar")]
        public Riksnycklar Riksnycklar { get; set; }
    }
    
    [XmlRoot(ElementName = "HemortSverige")]
    public class HemortSverige
    {
        [XmlElement(ElementName = "FodelselanKod")]
        public string FodelselanKod { get; set; }
        [XmlElement(ElementName = "Fodelseforsamling")]
        public string Fodelseforsamling { get; set; }
    }
    
    [XmlRoot(ElementName = "Fodelse")]
    public class Fodelse
    {
        [XmlElement(ElementName = "HemortSverige")]
        public HemortSverige HemortSverige { get; set; }
    }
    
    [XmlRoot(ElementName = "Medborgarskap")]
    public class Medborgarskap
    {
        [XmlElement(ElementName = "MedborgarskapslandKod")]
        public string MedborgarskapslandKod { get; set; }
        [XmlElement(ElementName = "Medborgarskapsdatum")]
        public string Medborgarskapsdatum { get; set; }
    }
    
    [XmlRoot(ElementName = "Personpost")]
    public class Personpost
    {
        [XmlElement(ElementName = "PersonId")]
        public PersonId PersonId { get; set; }
        [XmlElement(ElementName = "HanvisningsPersonNr")]
        public HanvisningsPersonNr HanvisningsPersonNr { get; set; }
        [XmlElement(ElementName = "Namn")]
        public Namn Namn { get; set; }
        [XmlElement(ElementName = "Folkbokforing")]
        public Folkbokforing Folkbokforing { get; set; }
        [XmlElement(ElementName = "Adresser")]
        public Adresser Adresser { get; set; }
        [XmlElement(ElementName = "Fodelse")]
        public Fodelse Fodelse { get; set; }
        [XmlElement(ElementName = "Medborgarskap")]
        public Medborgarskap Medborgarskap { get; set; }
    }
    
    [XmlRoot(ElementName = "FolkbokforingspostTYPE")]
    public class FolkbokforingspostTYPE
    {
        [XmlElement(ElementName = "Sekretessmarkering")]
        public Sekretessmarkering Sekretessmarkering { get; set; }
        [XmlElement(ElementName = "Personpost")]
        public Personpost Personpost { get; set; }
    }
    

    }

    上面的代码从应用程序 *.exe 文件夹中名为 xml.xml 的文件加载您的 XML.... 检查“PersonalIdentityNumber”以获取您的结果....

    ///////////////

    更新 1

    ///////////////

    对于新 XML 中的所有 PersonalIdentityNumber,仅将控制台应用程序中的“Main”函数替换为以下代码......

        static void Main(string[] args)
        {
            try
            {
    
                List<FolkbokforingspostTYPE> deserializedList = new List<FolkbokforingspostTYPE>();
                deserializedList = Deserialize<List<FolkbokforingspostTYPE>>();
    
                var PersonalIdentityNumber = deserializedList.Select(item => item.Personpost.PersonId.PersonNr).ToList();
                foreach(var i in PersonalIdentityNumber)
                {
                    Console.WriteLine("Personnummer: " + i);
                }
            }// Put a break-point here, then mouse-over PersonalIdentityNumber...  deserializedList contains everything if you need it
            catch (Exception)
            {
    
                throw;
            }
            Console.ReadKey();
        }
    

    【讨论】:

    • 我试过了:Console.WriteLine(SerializerObj.PersonalIdentityNumber);这是正确的吗?
    • 在代码开头的行下的注释处放置一个断点...'var PersonalIdentityNumber =...',然后将鼠标悬停在'PersonalIdentityNumber'上
    • 我做到了。请检查我更新的问题。它找不到它。
    • 我已经更新了我的答案...您需要完全按照它的样子复制\粘贴它...。还可以使用断点 + F10 和 F11 键来逐步执行代码,它是唯一的您将如何弄清楚它是如何工作的......
    • 谢谢您,它正在工作!但是,我希望它遍历 XML 中的所有值。您是如何获得 XML 反序列化代码的?你能检查一下我包含整个 XML 的“更新 2”吗?我希望它从 XML 标记中获取所有值(在本例中为 PersonalIdentityNumber')
    【解决方案3】:

    我认为问题在于代码片段中没有提到FolkbokforingspostTYPE,只有ArrayOfFolkbokforingspostTYPE。反序列化器期望成员元素是后者的直接子元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多