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");
Annonceindlæg tema
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
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");
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);
18. januar 2007 - 20:23
#4
yeps, nu ligner det noget... data ligger dog pt
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>
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'?
18. januar 2007 - 20:42
#7
heh ja :
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>
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);
18. januar 2007 - 21:25
#10
wweeee
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.