Avatar billede olesen85 Nybegynder
28. juni 2012 - 10:16 Der er 8 kommentarer

Import XML to Gridview

Hej jeg har en XML fil som indholder dette info:
<?xml version="1.0" encoding="UTF-8"?>
<sites>
    <site name="test-site">
        <net>"10.11.x.x/24"</net>
        <net>"10.30.x.x/24"</net>
        <net>"10.30.x.x/24"</net>
        <net>"10.30.x.x/24"</net> 
    </site>
    <site name="A-New-Site">
        <net>"192.168.246.0/24"</net>
        <net>"192.168.252.0/24"</net>
    </site>
</sites

Denne fil vil jeg gerne importer til et gridview så jeg får en kolonne for hver "Sitename" hvor de forskellige net så kommer under.
Avatar billede janus_007 Nybegynder
28. juni 2012 - 21:51 #1
Jeg går udfra du ved hvordan xml'en indlæses...

Her følger en løsning:
XDocument xDoc = XDocument.Parse(xml);

            var result = xDoc.Root.Elements("site")
                .Select(x => new {

                    Net = new List<string>{ x.Attribute("name").Value}.Concat(x.Elements().Select(n => n.Value)).ToList()
                });

Så kan du databinde...
Gridview.DataSource = result;
Gridview.DataBind();
Avatar billede olesen85 Nybegynder
29. juni 2012 - 08:24 #2
HEj ved ikke lige hvordan den skal indlæses når den skal bruges med XDocument.
Avatar billede olesen85 Nybegynder
29. juni 2012 - 08:25 #3
i denne del kender den ikke .select "var result = xDoc.Root.Elements("site")
                .Select(x => new {"

Det er en windows form program jeg er ved at lave
Avatar billede olesen85 Nybegynder
29. juni 2012 - 10:50 #4
Har prøvet med dette kode men får ikke noget ind i mit gridview?

              if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                  XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(openFileDialog1.FileName);
                    StringWriter sw = new StringWriter();
                    XmlTextWriter xw = new XmlTextWriter(sw);
                    xmlDoc.WriteTo(xw);
                    string xml = sw.ToString();

                    XDocument xDoc = XDocument.Parse(xml);
                    var result = xDoc.Root.Elements("site").Select(x => new { Net = new List<string> { x.Attribute("name").Value }.Concat(x.Elements().Select(n => n.Value)).ToList() });
                    SitesGridView.DataSource = result;
                   
                }
Avatar billede janus_007 Nybegynder
30. juni 2012 - 22:38 #5
Du skal databinde efter du har sat datasourcen.

Du har sikkert også fundet ud af inkludere System.Linq ser jeg :)
Avatar billede olesen85 Nybegynder
03. juli 2012 - 10:03 #6
der er ikke noget der heder SitesGridView.DataBind da det er en windows form
Avatar billede janus_007 Nybegynder
03. juli 2012 - 19:24 #7
Så prøv at debugge og se hvad der er i result.

Post resultatet her.
Avatar billede olesen85 Nybegynder
04. juli 2012 - 08:29 #8
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

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