Avatar billede skovborg Nybegynder
06. januar 2007 - 12:25 Der er 9 kommentarer og
1 løsning

Indsætte element i XML

Hej alle
Jeg er ved at blive helt grøn i boldten.
Jeg vil gerne indsætte et element mere i dette XML dokument:
<Dates>
<Date ID="5-6-2007">
    <OpeningTime1>00:00</OpeningTime1>
    <ClosingTime1>00:00</ClosingTime1>
    <Prompt1>
    </Prompt1>
    <OpeningTime2>00:00</OpeningTime2>
    <ClosingTime2>00:00</ClosingTime2>
    <Prompt2>
    </Prompt2>
  </Date>
</Dates>

Mit problem er at jeg ikke kan finde ud af at gøre det uden at elementet <Date ID = "12-01-2007"> bliver til noget være snask med <Date:ID xmlns:Date="19-01-2007">

jeg har hårdt brug for hjælp og er åben for alt.

Med venlig hilsen
Morten Skovborg
Avatar billede kalp Novice
06. januar 2007 - 12:43 #1
XmlDocument xmldoc = new XmlDocument();
xmlDoc.Load("ditxmldoc");

XmlNode root = xmlDoc.DocumentElement;
                XmlElement childNode = xmlDoc.CreateElement("Date");
                XmlAttribute textNode = xmlDoc.CreateAttribute ("ID");
                textNode.Value = "5-6-2007";
                childNode.SetAttributeNode(textNode);
                root.AppendChild(childNode);
                xmlDoc.Save(ditxmlDoc);


altså det her virker ikke.. for mangler jo resten af dine elementer... men vil mene det er sådan du oprettet et node element med en attribut værdi og tilføjer den dit doc..
Avatar billede kalp Novice
06. januar 2007 - 13:06 #2
okay.. kiggede lidt mere på det.. skal nu mere se sådan ud

..opretter en 3'er

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ditxmldoc);

   
        XmlElement parentNode  = xmlDoc.CreateElement("Date");

        parentNode.SetAttribute("ID", "12-01-2007");

        xmlDoc.DocumentElement.PrependChild(parentNode);

 
        XmlElement mainNode    = xmlDoc.CreateElement("OpeningTime3");
        XmlElement descNode    = xmlDoc.CreateElement("ClosingTime3");
        XmlElement activeNode  = xmlDoc.CreateElement("Prompt3");


        XmlText mainText    = xmlDoc.CreateTextNode("00:00");
        XmlText descText    = xmlDoc.CreateTextNode("00:00");
        XmlText activeText  = xmlDoc.CreateTextNode("");


        parentNode.AppendChild(mainNode);
        parentNode.AppendChild(descNode);
        parentNode.AppendChild(activeNode);

        mainNode.AppendChild(mainText);
        descNode.AppendChild(descText);
        activeNode.AppendChild(activeText);


        xmlDoc.Save(stitilxmldoc);
Avatar billede skovborg Nybegynder
06. januar 2007 - 13:14 #3
du er altså hurtig, jeg er ved at teste det nu.

Mvh
Morten Skovborg
Avatar billede kalp Novice
06. januar 2007 - 13:23 #4
oki.. angående stien til din xml.. hvis du vil angive den direkte så skal du sætte @ foran.. altså


xmlDoc.Load(@"c:\dinxml.xml");

og ellers ville det se sådan ud

xmlDoc.Load("c:\\dinxml.xml");

det kan blive rimelig uoverskueligt hvis den ligger i et underligt sted for så skal de indtastes mange dobbelt \\
Avatar billede skovborg Nybegynder
06. januar 2007 - 13:28 #5
nu får jeg dette resultat:
<Dates>
  <Date ID="12-01-2007">
    <OpeningTime1>00:0000:00</OpeningTime1>
    <ClosingTime1>00:0000:00</ClosingTime1>
    <Prompt1>
    </Prompt1>
    <OpeningTime2 />
    <ClosingTime2 />
    <Prompt2 />
  </Date>
  <Date ID="01-01">
    <OpeningTime1>00:00</OpeningTime1>
    <ClosingTime1>00:00</ClosingTime1>
    <Prompt1>
    </Prompt1>
    <OpeningTime2>00:00</OpeningTime2>
    <ClosingTime2>00:00</ClosingTime2>
    <Prompt2>
    </Prompt2>
  </Date>

Med denne kode:
mlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"C:\Udvikling\Visual Studio 2005\OpenCloseXML\App_Data\OpenClosedDates.xml");
            XmlElement parentNode = xmlDoc.CreateElement("Date");

            parentNode.SetAttribute("ID", "12-01-2007");

            xmlDoc.DocumentElement.PrependChild(parentNode);


            XmlElement mainNode = xmlDoc.CreateElement("OpeningTime1");
            XmlElement descNode = xmlDoc.CreateElement("ClosingTime1");
            XmlElement activeNode = xmlDoc.CreateElement("Prompt1");

            XmlText mainText = xmlDoc.CreateTextNode("00:00");
            XmlText descText = xmlDoc.CreateTextNode("00:00");
            XmlText activeText = xmlDoc.CreateTextNode("");
            parentNode.AppendChild(mainNode);
            parentNode.AppendChild(descNode);
            parentNode.AppendChild(activeNode);

            mainNode.AppendChild(mainText);
            descNode.AppendChild(descText);
            activeNode.AppendChild(activeText);
           
            XmlElement mainNode2 = xmlDoc.CreateElement("OpeningTime2");
            XmlElement descNode2 = xmlDoc.CreateElement("ClosingTime2");
            XmlElement activeNode2 = xmlDoc.CreateElement("Prompt2");

            XmlText mainText2 = xmlDoc.CreateTextNode("00:00");
            XmlText descText2 = xmlDoc.CreateTextNode("00:00");
            XmlText activeText2 = xmlDoc.CreateTextNode("");
            parentNode.AppendChild(mainNode2);
            parentNode.AppendChild(descNode2);
            parentNode.AppendChild(activeNode2);

            mainNode.AppendChild(mainText2);
            descNode.AppendChild(descText2);
            activeNode.AppendChild(activeText2);
           
            Console.WriteLine("Display the modified XML...");
            xmlDoc.Save(Console.Out);

Hvad er det jeg laver forkert?
Xml'en er jeg lidt sjov :-))

Mvh
Morten den uheldige
Avatar billede kalp Novice
06. januar 2007 - 13:33 #6
hmm.. prøv lige at slette den der xml fil helt.. og så kør programmet 1 gang.. og tjek indholdet af den
Avatar billede kalp Novice
06. januar 2007 - 13:38 #7
og hvorfor siger du egentlig xmlDoc.Save(Console.Out) og ikke
xmlDoc.Save(@"C:\Udvikling\Visual Studio 2005\OpenCloseXML\App_Data\OpenClosedDates.xml");
Avatar billede kalp Novice
06. januar 2007 - 13:42 #8
mainNode2.AppendChild(mainText2);
            descNode2.AppendChild(descText2);
            activeNode2.AppendChild(activeText2);


meen... her er en fejl;) du havde skrevet 1 ud for disse.. hehe
Avatar billede skovborg Nybegynder
06. januar 2007 - 13:50 #9
YES det virker JUUUBBIIIIIEEEEEEEE
Jeg skriver xmlDoc.Save(Console.Out) for at få resultatet ud i consolden istedet for i filen, så ødelægger jeg ikke den når jeg tester.

Hvor er dit svar?

Mange tak, nu vil jeg gå en tur med hunden det har tårer i øjenene af bare tissetrængenhed :-))

Mvh
Morten
Avatar billede kalp Novice
06. januar 2007 - 13:51 #10
LOOL

hehe fair nok;o)

og selv tak;)

mvh
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