Avatar billede mickni33 Nybegynder
29. januar 2009 - 09:46 Der er 5 kommentarer og
1 løsning

Serialisering af XML objekter

Jeg har lavet en metode som skriver et objekt om til XMl og gemmer filen på disk..

jeg kunne godt tænke mig at XML dokumentet kom til at se sådan ud

<?xml version="1.0"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="RRSCompanySettings">
      <Setting>
            <Name>Michael</Name>
        <tlf>123456</tlf>
      </Setting>
    <Setting>
            <Name>Hans</Name>
        <tlf>987654</tlf>
      </Setting>
    <Setting>
            <Name>Peter</Name>
        <tlf>112233</tlf>
      </Setting>
</Settings>

men det har jeg haft problemer med da mit output bliver til dette her

<?xml version="1.0"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="RRSCompanySettings">
  <Setting>
    <Name>Peter</Name>
    <Tlf>112233</Tlf>
  </Setting>
  <SettingsList>
    <anyType xsi:type="Setting">
      <Name>Michael</Name>
      <Tlf>123456</Tlf>
    </anyType>
    <anyType xsi:type="Setting">
      <Name>Hans</Name>
      <Tlf>987654</Tlf>
    </anyType>
    <anyType xsi:type="Setting">
      <Name>Peter</Name>
      <Tlf>112233</Tlf>
    </anyType>
  </SettingsList>
</Settings>

Kan det lade så gøre at lave den simple xml så jeg har skrevet øverst

Her er min klasser:
-------------------------------------------------------
    [XmlRootAttribute("Settings", Namespace = "RRSCompanySettings", IsNullable = false)]
      public class Settings {

            [XmlArray("Personer"),XmlArrayItem("Personer", typeof(Setting))]
            private ArrayList m_SettingsList = new ArrayList();

            [XmlElementAttribute("Setting")]
            private Setting m_Setting;

            /// <summary>
            /// Det er de her properties som sørger for at variablerne bliver serialiseret
            /// </summary>
            #region Properties

            public Setting Setting {
                  get { return m_Setting; }
                  set { m_Setting = value; }
            }

            public ArrayList SettingsList {
                  get { return m_SettingsList; }
                  set { m_SettingsList = value; }
            }

------------------------------------------------------
  public class Setting {
          [XmlElementAttribute("Name")]
          private String m_Name;
          [XmlElementAttribute("Tlf")]
          private int m_Tlf;
         
          public String Name {
                get { return m_Name; }
                set { m_Name = value; }
          }

          public int Tlf {
                get { return m_Tlf; }
                set { m_Tlf = value; }
          }
    }

----------------------------------------------------

og min main:
---------------------------------------------------------
Settings settings = new Settings();
settings.CreateSettings("Michael",123456);
settings.CreateSettings("Hans",987654);
settings.CreateSettings("Peter",112233);

//denne metode serialisere
System.Xml.XmlDocument xml = XMLHandler.ObjToXML(settings);
xml.Save("C:\\tesfil.xml");
Avatar billede mickni33 Nybegynder
29. januar 2009 - 09:48 #1
hov glemte denne metode i klassen Settings:

  public void CreateSettings(String name,int tlf){
                  m_Setting = new Setting();
                  m_Setting.Name = name;
                  m_Setting.Tlf = tlf;
                m_SettingsList.Add(m_Setting);                 
            }
Avatar billede mickni33 Nybegynder
29. januar 2009 - 10:08 #2
byttede private ArrayList m_SettingsList = new ArrayList();
ud med  private List<Setting> m_SettingsList = new List<Setting>();

så nu mangler jeg bare at fjerne
<Setting>
    <Name>Peter</Name>
    <Tlf>112233</Tlf>
  </Setting>
så bliver tilføjet fordi han er den sidste person som bliver add'et til listen
Avatar billede mickni33 Nybegynder
29. januar 2009 - 10:10 #3
og dette blev gjort ved at tilføje settings.Setting = null;
i main:

settings.CreateSettings("Michael",123456);
                  settings.CreateSettings("Hans",987654);
                  settings.CreateSettings("Peter",112233);
                  settings.Setting = null;
                  System.Xml.XmlDocument xml = XMLHandler.ObjToXML(settings);
                  xml.Save("C:\\sonwin\\tesfil.xml");
Avatar billede mickni33 Nybegynder
29. januar 2009 - 11:27 #4
hmmm kan man fjerne
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="RRSCompanySettings">

som fremkommer i linie 2
Avatar billede arne_v Ekspert
29. januar 2009 - 19:18 #5
Avatar billede mickni33 Nybegynder
29. januar 2009 - 20:37 #6
XMLHandler = serialiserer og deserialiserer

aaahhh lyder som et godt link :-)
den kigger jeg på
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester