Oprettet tor. d. 29. januar 2009 kl. 09:46:47

mickni33
mickni33 (13.827 point. Point ude: 150)

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/ (...) xmlns:xsd="http://www.w3.org/ (...) 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/ (...) xmlns:xsd="http://www.w3.org/ (...) 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");

Skrevet tor. d. 29. januar 2009 kl. 09:48:19| #1

mickni33
mickni33 (13.827 point)
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);                 
            }

Skrevet tor. d. 29. januar 2009 kl. 10:08:26| #2

mickni33
mickni33 (13.827 point)
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

Skrevet tor. d. 29. januar 2009 kl. 10:10:16| #3

mickni33
mickni33 (13.827 point)
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");

Skrevet tor. d. 29. januar 2009 kl. 11:27:54| #4

mickni33
mickni33 (13.827 point)
hmmm kan man fjerne
<Settings xmlns:xsi="http://www.w3.org/ (...) xmlns:xsd="http://www.w3.org/ (...) xmlns="RRSCompanySettings">

som fremkommer i linie 2

Skrevet tor. d. 29. januar 2009 kl. 19:18:52| #5

arne_v
arne_v (1.016.169 point)
Nu ved jeg ikke hvad XMLHandler goer, men check:
  http://www.csharper.net/ (...)

Skrevet tor. d. 29. januar 2009 kl. 20:37:31| #6

mickni33
mickni33 (13.827 point)
XMLHandler = serialiserer og deserialiserer

aaahhh lyder som et godt link :-)
den kigger jeg på

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Print fra Windows Service på Win2008

Oprettet den 24. maj 2012 kl. 11.17
jps6kb giver 200 point for svar | Giv et svar »

Udskrive en Breadcrumb (Jeg er her >>)

Oprettet den 18. maj 2012 kl. 12.04
Qbruger giver 200 point for svar | Giv et svar »

Hjælp til at lokalisere fejl i CMS (synkron.via) dll

Oprettet den 16. maj 2012 kl. 19.31
jokkejensen giver 200 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger