Avatar billede ircnoob Nybegynder
18. januar 2007 - 18:26 Der er 9 kommentarer og
1 løsning

Appand xml data

Hejsa,

nedenstående fungerer fint, men overskriver jo XML filen hver gang.. hvordan kan jeg fortsætte på den nuværende xml fil ?

og tilføje nye elementer indenfor det nuværende dokument


            XmlDocument doc = new XmlDocument();

            XmlElement rootElement, productElement, priceElement;
            XmlComment comment;

            XmlDeclaration declaration;
            declaration = doc.CreateXmlDeclaration("1.0", null, "yes");

            doc.InsertBefore(declaration, doc.DocumentElement);

            comment = doc.CreateComment("");
            doc.InsertAfter(comment, declaration);

            rootElement = doc.CreateElement("ProduktionsListe");
            doc.InsertAfter(rootElement, comment);

            productElement = doc.CreateElement("Produktion");
            rootElement.AppendChild(productElement);

            priceElement = doc.CreateElement("Start");
            priceElement.InnerText = dateTimePicker1.Value.ToString();
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Slut");
            priceElement.InnerText = dateTimePicker2.Value.ToString();
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Maskintæller");
            priceElement.InnerText = dateTimePicker1.Value.ToString();
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Medarbejder");
            priceElement.InnerText = textBox4.Text;
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Antal_pr_vred");
            priceElement.InnerText = numericUpDown1.Value.ToString();
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Produceret_i_alt");
            priceElement.InnerText = produceret.ToString();
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Tid_i_alt");
            priceElement.InnerText = tid.Hours + ":" + tid.Minutes;
            productElement.AppendChild(priceElement);

            priceElement = doc.CreateElement("Gennemsnit");
            priceElement.InnerText = gennemsnit.ToString();
            productElement.AppendChild(priceElement);

            doc.Save(@"c:\Xmlfil.xml");
Avatar billede kalp Novice
18. januar 2007 - 19:29 #1
Du skal kalde load på dit doc..

doc.Load(@"c:\Xmlfil.xml");

og ikke LoadXml! men bare Load..

og så gemmer du jo fint nok til sidst.
så skal du selvfølgelig ikke have XmlDeclaration  osv. med når du bare opdatere en xml fil.

og får at indsætte et element i dit dokument skal du have fat i root noden..

doc.DocumentElement

og du kalder selvfølgelig appendchild for at gemme noden i den.. så helt præcist..

doc.DocumentElement.AppendChild(dinNyNode);

ud fra det du har lavet før ser det ud til at det svare til dette kald

productElement.AppendChild
Avatar billede ircnoob Nybegynder
18. januar 2007 - 19:48 #2
tja melder ikke fejl, men virker heller ikke lige.. hvad er der lige galt ?'

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlDocument doc = new XmlDocument();
doc.Load(fs);

XmlElement productElement;
productElement = doc.CreateElement("Produktion");
XmlElement newelemet = doc.CreateElement("Start");

newelemet.InnerText = dateTimePicker1.Value.ToString();

productElement.AppendChild(newelemet);

doc.Save(@"c:\xmlfilen");
Avatar billede kalp Novice
18. januar 2007 - 19:50 #3
jeg bruger ikke dette
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

jeg angiver bare stien til filen præcis som jeg skrev før til dig:)

og ja det virker ikke fordi du ikke gjorde som jeg skrev... du appender til det forkerte..

XmlElement newelemet = doc.CreateElement("Start");
newelemet.InnerText = dateTimePicker1.Value.ToString();
doc.DocumentElement.AppendChild(newelemet);
Avatar billede ircnoob Nybegynder
18. januar 2007 - 20:23 #4
yeps, nu ligner det noget...

data ligger dog pt
Avatar billede ircnoob Nybegynder
18. januar 2007 - 20:28 #5
sårn her.. så mangler at der kommer produktion tag rundt om..

Men får: "The 'Produktion' start tag on line 13 does not match the end tag of 'ProduktionsListe'. Line 14, position 3."

doc.Load(@"c:\xml.xml");
           
            XmlElement produktionElement = doc.CreateElement("Produktion");

            XmlElement start = doc.CreateElement("Start");
            start.InnerText = dateTimePicker1.Value.ToString();
            doc.DocumentElement.AppendChild(start);

            doc.DocumentElement.AppendChild(produktionElement);

            doc.Save(@"c:\xml.xml");

<ProduktionsListe>
<Produktion>
  <Start>18-01-2007 19:14:37</Start>
  <Slut>18-01-2007 20:14:37</Slut>
  <Maskintæller>18-01-2007 19:14:37</Maskintæller>
  <Medarbejder>benni</Medarbejder>
  <Antal_pr_vred>7</Antal_pr_vred>
  <Produceret_i_alt>308</Produceret_i_alt>
  <Tid_i_alt>1:0</Tid_i_alt>
  <Gennemsnit>5,13333333333333</Gennemsnit>
<Produktion>
</ProduktionsListe>
Avatar billede erikjacobsen Ekspert
18. januar 2007 - 20:35 #6
Næstsidste linie skal være:  </Produktion>
Det er forhåbentlig noget du selv har skrevet i hånden, ik'?
Avatar billede ircnoob Nybegynder
18. januar 2007 - 20:42 #7
heh ja :
Avatar billede ircnoob Nybegynder
18. januar 2007 - 20:43 #8
min fejl, men nu ender den sådan

<ProduktionsListe>
<Produktion>
  <Start>18-01-2007 19:14:37</Start>
  <Slut>18-01-2007 20:14:37</Slut>
  <Maskintæller>18-01-2007 19:14:37</Maskintæller>
  <Medarbejder>benni</Medarbejder>
  <Antal_pr_vred>7</Antal_pr_vred>
  <Produceret_i_alt>308</Produceret_i_alt>
  <Tid_i_alt>1:0</Tid_i_alt>
  <Gennemsnit>5,13333333333333</Gennemsnit>
  </Produktion>
  <Start>18-01-2007 22:40:18</Start>
  <Slut>18-01-2007 00:40:18</Slut>
  <Maskintæller>333</Maskintæller>
  <Medarbejder>hej</Medarbejder>
  <Antal_pr_vred>66</Antal_pr_vred>
  <Produceret_i_alt>21978</Produceret_i_alt>
  <Tid_i_alt>2:0</Tid_i_alt>
  <Gennemsnit>183,15</Gennemsnit>
  <Produktion />
  </ProduktionsListe>
Avatar billede erikjacobsen Ekspert
18. januar 2007 - 20:51 #9
Utestet, men nok nærmere

          XmlElement produktionElement = doc.CreateElement("Produktion");

            XmlElement start = doc.CreateElement("Start");
            start.InnerText = dateTimePicker1.Value.ToString();
            produktionElement.AppendChild(start)

            doc.DocumentElement.AppendChild(produktionElement);
Avatar billede ircnoob Nybegynder
18. januar 2007 - 21:25 #10
wweeee
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til lokal IT i Slagelse

Unik System Design A/S

DevOps Engineer

Capgemini Danmark A/S

Finance Lead (SAP)

Aller Media A/S

IT Operations Engineer