Avatar billede el_fredo Praktikant
16. oktober 2003 - 17:57 Der er 15 kommentarer og
2 løsninger

XML, DataSet og DataReader

Jeg har et problem (nå, har han...?).
Jeg har hentet data fra en DB ud til et DataSet, da jeg derved nemt kan skrive data til en XML-fil.

DataSet ds = new DataSet
ds.WriteXML(string fileName)

Så nemt er det.

Jeg kan imidlertid ikke hive informationerne ud igen. Jeg skal behandle mine gemte data, så jeg er nødt til (tror jeg) at hive dem ud på samme måde som med fx en DataReader. Jeg kan godt konvertere XML-filen til et DataSet igen, men så er jeg lige vidt.

Er det muligt at konvertere en XML-fil til et DataReader-objekt? Kan jeg konvertere et DataSet til et DataReader-objekt? Kan jeg hive informationer ud af et DataSet-objekt, uden at dette foregår i et DataGrid eller i en XML-fil? Jeg skal bare have mine data ud, enten fra XML eller DataSet-format. Jeg vil gerne undgå, at skulle decifrere min XML-fil, da den er ret stor...
Avatar billede arne_v Ekspert
16. oktober 2003 - 18:41 #1
Du kan læse og parse file med enten XmlTextReader eller eom DOM (XmlDocument).
Avatar billede quaser Nybegynder
16. oktober 2003 - 18:54 #2
Der er ikke nogle problemer ved at loope igennem de enkelte rows i dit DataSet.

En DataReader bliver brugt til udtrak for databasen, så den kan du ikke bruger.

Og som arne_v skriver er der også xmltextreader, som du kan bruge.
Avatar billede el_fredo Praktikant
16. oktober 2003 - 22:56 #3
Hvordan looper jeg gennem et DataSet?
Hvor får jeg fat på XmlTextReader? Er den allerede inkluderet? I så fald, hvilket namespace ligger den under?
Avatar billede arne_v Ekspert
16. oktober 2003 - 22:58 #4
System.Xml
Avatar billede arne_v Ekspert
16. oktober 2003 - 22:59 #5
Jeg har 2 små eksempler til følgende XML:

<?xml version="1.0" encoding="iso-8859-1" ?>
<alle>
  <en>
    <a>1</a>
    <b>22</b>
    <c>333</c>
  </en>
  <en>
    <a>4444</a>
    <b>55555</b>
    <c>666666</c>
  </en>
</alle>
Avatar billede arne_v Ekspert
16. oktober 2003 - 22:59 #6
using System;
using System.Xml;

class MainClass
{
        public static void Main(string[] args)
        {
                XmlTextReader rdr = new XmlTextReader("C:\\test.xml");
                bool state = false;
                while(rdr.Read())
                {
                        if( rdr.NodeType == XmlNodeType.Element &&  rdr.Name.Equals("b"))
                        {
                                state = true;
                        }
                        if(state && rdr.NodeType == XmlNodeType.Text)
                        {
                                Console.WriteLine(rdr.Value);
                        }
                        if( rdr.NodeType == XmlNodeType.EndElement &&  rdr.Name.Equals("b"))
                        {
                                state = false;
                        }
                }
        }
}
Avatar billede arne_v Ekspert
16. oktober 2003 - 22:59 #7
using System;
using System.Xml;

class MainClass
{
        public static void Main(string[] args)
        {
                XmlDocument doc = new XmlDocument();
                doc.Load("C:\\test.xml");
                XmlNodeList elements = doc.GetElementsByTagName("b");
                foreach(XmlNode element in elements)
                {
                        Console.WriteLine(element.FirstChild.Value);
                }
        }
}
Avatar billede arne_v Ekspert
16. oktober 2003 - 23:00 #8
De skulle gerne illustrere lidt hvad man kan.
Avatar billede quaser Nybegynder
16. oktober 2003 - 23:18 #9
//Loop through each row within the DataSet

      foreach(DataRow dr in ds.Tables[0].Rows)
      {
            Console.WriteLine();

            //Display the contents of the column firstname
            Console.WriteLine(dr["firstname"]);

            //Display the contents of the column lastname
            Console.WriteLine(dr["lastname"]);

      }

Kilde:
http://www.perfectxml.com/articles/xml/dataset.asp
Avatar billede el_fredo Praktikant
17. oktober 2003 - 09:00 #10
Tak for det begge to. Kan I ikke lige svare, så jeg kan afslutte spørgsmålet?
Avatar billede el_fredo Praktikant
17. oktober 2003 - 09:02 #11
Er der i øvrigt en af jer der har styr på SQL sætninger? I så fald har jeg et spørgsmål posted, som jeg ikke har fået hjælp på...

http://www.eksperten.dk/spm/414817
Avatar billede arne_v Ekspert
17. oktober 2003 - 09:34 #12
svar
Avatar billede arne_v Ekspert
17. oktober 2003 - 09:36 #13
Jeg prøver lige at kigge på det andet spørgsmål.
Avatar billede quaser Nybegynder
17. oktober 2003 - 11:05 #14
svar
Avatar billede el_fredo Praktikant
17. oktober 2003 - 11:39 #15
30/20. arne_v har bidraget med mere arbejde... tror jeg. Der er i hvert tilfælde mere tekst. Håber det er i orden ;o)
Avatar billede quaser Nybegynder
17. oktober 2003 - 11:57 #16
Min lille søgning på google "Loop through dataset c#" tog i hvert fald ikke lang tid :)
Avatar billede el_fredo Praktikant
17. oktober 2003 - 13:00 #17
Ja, der kan jeg lære lidt... og spare nogle points...
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