Avatar billede misbruger Nybegynder
05. juni 2004 - 23:39 Der er 6 kommentarer og
1 løsning

XML håndtering

Jeg skal lave en lille windows form, som kan åbne et xml doc, og rette og tilføje poster i det.

Mit xml doc er temmelig simpelt....

<?xml version="1.0" encoding="utf-8" ?>
<Applications>
    <Application path="C:\WINDOWS\system32\notepad.exe" time="1" />
    <Application path="C:\Programmer\Internet Explorer\IEXPLORE.EXE" time="2" />
    <Application path="C:\WINDOWS\system32\cmd.exe" time="3" />
</Applications>

Jeg skal kunne følgende....

1. Se poster i doc'et

2. Oprette en ny post i doc'et, hvor....
- "path" sættes ved at man kan browse hen til en fil gennem OpenFileDialog
- "time" valideres om hvorvidt der findes en anden post med samme værdi.

3. Rette i en eksisterende post, hvor....
- "path" sættes ved at man kan browse hen til en fil gennem OpenFileDialog
- "time" valideres om hvorvidt der findes en anden post med samme værdi.

4. Slette en post

Kode, links, artikler mm. søges.

NB. Jeg er grøn :)

På forhånd tak!
Avatar billede arne_v Ekspert
05. juni 2004 - 23:43 #1
Du indlæser XML med:

XmlDocument doc = new XmlDocument();
doc.Load("noget.xml");

Du kan løbe igennem Application tags med:

XmlNodeList elements = doc.GetElementsByTagName("Application");
foreach(XmlNode element in elements)
{
    ...
}
Avatar billede arne_v Ekspert
05. juni 2004 - 23:46 #2
Du kan tilføje en Application tag med:

XmlNode add = doc.CreateElement("Application");
add.setAttribute("path", "...");
add.setAttribute("time", "...");
doc.DocumentElement.AppendChild(add);
Avatar billede arne_v Ekspert
05. juni 2004 - 23:47 #3
Du kan slette et Application tag med:

doc.DocumentElement.RemoveChild(element);
Avatar billede arne_v Ekspert
05. juni 2004 - 23:48 #4
Lad mig gætte - du kunne godt tænke dig et komplet eksempel ?
Avatar billede arne_v Ekspert
06. juni 2004 - 00:03 #5
using System;
using System.Xml;

class MainClass
{
    public static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("C:\\test.xml");
        // løb igennem alle applikationer
        XmlNodeList elements = doc.GetElementsByTagName("Application");
        foreach(XmlNode element in elements)
        {
            Console.WriteLine(element.Attributes["path"].Value + " " + element.Attributes["time"].Value);
        }
        // tilføj applikation
        XmlElement add = doc.CreateElement("Application");
        add.SetAttribute("path", "ARNE.EXE");
        add.SetAttribute("time", "4");
        doc.DocumentElement.AppendChild(add);
        // udskriv
        doc.Save(Console.Out);
        // find time=3 og slet
        XmlNodeList elms = doc.GetElementsByTagName("Application");
        XmlNode fnd = null;
        foreach(XmlNode elm in elms)
        {
            if(elm.Attributes["time"].Value == "3")
            {
                fnd = elm;
            }
        }
        doc.DocumentElement.RemoveChild(fnd);
        // udskriv
        doc.Save(Console.Out);
    }
}
Avatar billede arne_v Ekspert
06. juni 2004 - 00:04 #6
Det er muligt at sletningen kan laves smartere med noget xpath.

GUI browse kan jeg ikke hjælpe med.
Avatar billede arne_v Ekspert
06. juni 2004 - 00:06 #7
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