Avatar billede javanic Nybegynder
25. oktober 2004 - 20:13 Der er 15 kommentarer og
1 løsning

Er det muligt at skrive en DataTable direkte til XML-fil?

..Kan selvfølgelig indsætte den i et dataset, men er der ikke en mere hensigtsmæssig måde at gøre det på ?
Avatar billede javanic Nybegynder
25. oktober 2004 - 20:14 #1
Jeg har er DataSet, bestående af en række tabeller, som jeg vil have gemt i seperate filer - og uafhængigt af hinanden..
Avatar billede arne_v Ekspert
25. oktober 2004 - 20:22 #2
Så vidt jeg ved kan du ikke i .NET 1.1 men der skulle komme noget i .NET 2.0
Avatar billede javanic Nybegynder
25. oktober 2004 - 20:28 #3
Er det så mest hensigtsmæssigt at oprette et nyt DataSet, smide tabllen ind i det, og endelig kalde WriteXML på datasetet, eller ville det være en løkke der skulle til. Det behøver ikke være en "nem" løsning - ressource-forbruget spiller nemlig en rolle.
Avatar billede javanic Nybegynder
25. oktober 2004 - 21:22 #4
?
Avatar billede arne_v Ekspert
25. oktober 2004 - 21:34 #5
Jeg ved det ikke.

Principielt burde du kunne skrive XML'en en del hurtigere med noget
special kode som løb DataTable igennem og udskrev data.

Men jeg har aldrig arbejdet med det selv.
Avatar billede javanic Nybegynder
25. oktober 2004 - 22:48 #6
ok,...så går jeg igang med at lave et manuelt udtræk ;-)
Avatar billede arne_v Ekspert
25. oktober 2004 - 22:52 #7
Jeg kan også godt prøve at skrive en hvis det skulle være.
Avatar billede javanic Nybegynder
25. oktober 2004 - 22:58 #8
det må du da meget gerne... du er jo en rimelig haj, der har styr på dit ressource-forbrug - så har jeg da et godt stykke kode, at holde op imod mit eget.
Avatar billede javanic Nybegynder
25. oktober 2004 - 22:58 #9
:-)
Avatar billede arne_v Ekspert
25. oktober 2004 - 23:25 #10
Nu er det som sagt aldrig noget jeg har arbejdet med.

Men her er mit forsøg.
Avatar billede arne_v Ekspert
25. oktober 2004 - 23:26 #11
using System;
using System.IO;
using System.Xml;
using System.Text;
using System.Data;
using System.Data.SqlClient;

class MainClass
{
    public static void DataTableWrite(DataTable dt, TextWriter tw)
    {
        XmlTextWriter xtw = new XmlTextWriter(tw);
        xtw.Formatting = Formatting.Indented;
        xtw.WriteStartDocument();
        xtw.WriteStartElement("NewDataTable");
        for(int row = 0; row < dt.Rows.Count; row++)
        {
            xtw.WriteStartElement(dt.TableName);
            for(int col = 0; col < dt.Columns.Count; col++)
            {
                xtw.WriteStartElement(dt.Columns[col].ColumnName);
                xtw.WriteString(dt.Rows[row].ItemArray[col].ToString());
                xtw.WriteEndElement();
            }
            xtw.WriteEndElement();
        }
        xtw.WriteEndElement();
        xtw.WriteEndDocument();
        xtw.Close();
        tw.WriteLine();
    }
    public static void Main(string[] args)
    {
        // vi fylder et data set med data
        SqlConnection con = new SqlConnection("server=ARNEPC2\\ARNEPC2RUN;Integrated Security=SSPI;database=TestMSDE");
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM T1", con);
        DataSet ds = new DataSet();
        da.Fill(ds, "T1");
        // udskrivning af hele data set
        ds.WriteXml(Console.Out);
        Console.WriteLine();
        // special udskrivning af tabel
        DataTableWrite(ds.Tables["T1"], Console.Out);
        // færdig.
        con.Close();
    }
}
Avatar billede arne_v Ekspert
25. oktober 2004 - 23:26 #12
<NewDataSet>
  <T1>
    <F1>1</F1>
    <F2>A</F2>
  </T1>
  <T1>
    <F1>2</F1>
    <F2>BB</F2>
  </T1>
  <T1>
    <F1>3</F1>
    <F2>CCC</F2>
  </T1>
  <T1>
    <F1>4</F1>
    <F2>DD</F2>
  </T1>
  <T1>
    <F1>5</F1>
    <F2>E</F2>
  </T1>
</NewDataSet>
<?xml version="1.0" encoding="IBM437"?>
<NewDataTable>
  <T1>
    <F1>1</F1>
    <F2>A</F2>
  </T1>
  <T1>
    <F1>2</F1>
    <F2>BB</F2>
  </T1>
  <T1>
    <F1>3</F1>
    <F2>CCC</F2>
  </T1>
  <T1>
    <F1>4</F1>
    <F2>DD</F2>
  </T1>
  <T1>
    <F1>5</F1>
    <F2>E</F2>
  </T1>
</NewDataTable>
Avatar billede javanic Nybegynder
25. oktober 2004 - 23:35 #13
ok, prøver lige at kigge på det.

Nu kan jeg se at du anvender en almindelig for-løkke.. Ved du om der er ressource-mæssig fordele ved at anvende den ene løkketype - frem for den anden.

Har selv gang i en lignende løsning,...men der bruger jeg foreach ???
Avatar billede arne_v Ekspert
25. oktober 2004 - 23:36 #14
Jeg kan ikke forestille mig at der er nogen nævneværdig forskel.
Avatar billede javanic Nybegynder
26. oktober 2004 - 00:00 #15
tak Arne... nu spiller det.
smid lige et svar
Avatar billede arne_v Ekspert
26. oktober 2004 - 00:05 #16
ok
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