[asp.net]Xml inlezen in DataTable. Kan dit anders/beter?

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-02 16:30
Voor een klein projectje moet ik een XML bestand inlezen. De keuze voor xml is omdat er geen mogelijkheid is tot een database. Vandaar :)

Ik heb nu onderstaande code.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private DataTable xmlKreten()
{
    DataTable dt = new DataTable(); 
    dt.Columns.Add(new DataColumn("Waarde", typeof(string)));
    dt.Columns.Add(new DataColumn("Desc", typeof(string)));
    string FileName=@Server.MapPath("xml/waardes.xml") ;
    DataRow elm;
    XmlDocument objXml = new XmlDocument();
    objXml.Load(FileName);
    XmlNodeList nodeList;
    XmlElement root = objXml.DocumentElement;
    nodeList = root.SelectNodes("/waardes/type[@id='"+Session["Card_Type"]+"']");
    foreach (XmlNode waardenode in nodeList)
    {
        for(int i=0;i < waardenode.SelectNodes("doc_waarde").Count;i++)
        {
            elm = dt.NewRow();
            elm[0] = waardenode.SelectNodes("doc_waarde").Item(i).InnerText;
            elm[1] = waardenode.SelectNodes("doc_desc").Item(i).InnerText;
            dt.Rows.Add(elm);
        }
    }
    return dt;
}


De Xml welke aan deze methode gevoerd word ziet er als volgt uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<waardes>
    <type id="type_soort_1">
        <doc_waarde><![CDATA[waarde 1]]></doc_waarde>
        <doc_desc><![CDATA[desc 1]]></doc_desc>
    </type>
    <type id="type_soort_2">
        <doc_waarde><![CDATA[waarde 2]]></doc_waarde>
        <doc_desc><![CDATA[desc 2]]></doc_desc>
    </type>
</waardes>

N.b. naamgevingen e.d. zijn aagepast ivm leesbaarheid. Tevens zijn alle error checks eruit gehaald. Evt. tikfouten voorbehouden dus.

Ik vraag me eigenlijk af of dit wel 'the way to go' is. Het hele for loopje lijkt me overbodig en ik heb het idee dat er nog andere opties zijn, alleen kan ik er op dit moment geen verzinnen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
code:
1
2
DataSet ds = new DataSet();
ds.ReadXml("bestandje.xml"));


En daar heb je je DataSet :) Die kan je dan gewoon gaan binden aan GridView etc.

[ Voor 25% gewijzigd door maartenba op 23-05-2006 15:15 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21-02 16:30
maartenba schreef op dinsdag 23 mei 2006 @ 15:15:
code:
1
2
DataSet ds = new DataSet();
ds.ReadXml("bestandje.xml"));


En daar heb je je DataSet :) Die kan je dan gewoon gaan binden aan GridView etc.
Maar ik heb alleen maar 1 DataTable nodig met daarin:
code:
1
[doc_waarde] [doc_desc]
gebaseerd op het type id.

En om nu eerst de gehele DataSet te gaan ontleden om vervolgens 1 DataTable over te houden is imo ook weer zo zo.
maartenba schreef op dinsdag 23 mei 2006 @ 15:41:
Er eens met een DataView over gaan? Dan kan je mooi gaan definiëren welke kolommen en eventuele filter je moet hebben.
Zal eens gaan rommelen. Thanks.

[ Voor 24% gewijzigd door TeeDee op 23-05-2006 15:42 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Er eens met een DataView over gaan? Dan kan je mooi gaan definiëren welke kolommen en eventuele filter je moet hebben.