Avatar billede claus_n_p Nybegynder
24. marts 2005 - 04:44 Der er 7 kommentarer og
1 løsning

Xml til hashtabel

Hej

Jeg er meget ny i C# og kender intet til XML. Jeg har fået til opgave at overfører en XML fil til en hashtabel.

Xml filen er som følger:

<?xml version="1.0" encoding="utf-8"?>
-<globalization>
  - <languages>
        <language>English</language>
        <language>Chinese</language>
        <language>Japanese</language>
    </languages>
  -<English>
      -<page name="ASP.WebForm3_aspx">
        -<controlid name="Label1">
            <value>Title</value>
          <controlid>
        -<controlid name="DropDownList1">
            <value>ListItem1;ListItem2;ListItem3</value>
          <controlid>
          .
          .
          .
          osv.

Som det fremgår af XML, så er det en hjemmeside der skal have påklistret navne på labels, buttons m.m.. - alt efter hvilket sprog der anvendes.
Avatar billede arne_v Ekspert
24. marts 2005 - 09:31 #1
Du læser XML filen ind i et XmlDocument og processer det (ret nemt rekursivt)
og tilføjer det der skal tilføjes til en Hashtable.

Hvis du fortæller mig hvilke keys og values du vil have gemt for
ovenstående XML fragment så kan jeg godt skitsere noget kode.
Avatar billede claus_n_p Nybegynder
24. marts 2005 - 14:02 #2
Der skal laves 3 hashtabeller, en for hvert sprog, og de skal laves i starten af programmet.

De 3 tabeller skal navngives med det pågældende sprog som navn: eks. Hashtable English = new Hashtable

Key værdien skal være controlid name: eks. Label1, DropDownList1

Value værdien skal være value: eks. Title, ListItem1,List............

Jeg håber at det er svar nok - og jeg vil meget gerne have skitseret noget kode.
Avatar billede arne_v Ekspert
24. marts 2005 - 14:25 #3
Her kommer et eksempel som ligner dit meget.
Avatar billede arne_v Ekspert
24. marts 2005 - 14:26 #4
<allctls>
    <english>
        <ctl name="Label1">
            <value>Enter X</value>
        </ctl>
        <ctl name="Button1">
            <value>Save</value>
        </ctl>
    </english>
    <danish>
        <ctl name="Label1">
            <value>Indtast X</value>
        </ctl>
        <ctl name="Button1">
            <value>Gem</value>
        </ctl>
    </danish>
</allctls>
Avatar billede arne_v Ekspert
24. marts 2005 - 14:26 #5
using System;
using System.Collections;
using System.Text;
using System.Xml;

public class Cache
{
    private Hashtable english;
    private Hashtable danish;
    public Cache()
    {
        english = new Hashtable();
        danish = new Hashtable();
    }
    private void Process(Hashtable map, XmlNode langroot)
    {
        XmlNodeList ctls = langroot.SelectNodes("ctl");
        for(int i = 0; i < ctls.Count; i++) {
            string name = ((XmlElement)(ctls[i])).Attributes["name"].Value;
            string txt = ctls[i].FirstChild.FirstChild.Value;
            map.Add(name, txt);
        }
    }
    public void Load(string filename)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        Process(english, doc.SelectSingleNode("allctls/english"));
        Process(danish, doc.SelectSingleNode("allctls/danish"));
    }
    public string GetEnglish(string key)
    {
        return (string)english[key];
    }
    public string GetDanish(string key)
    {
        return (string)danish[key];
    }
}

class TestClass
{
    public static void Main(string[] args)
    {
        Cache c = new Cache();
        c.Load(@"C:\ctltxt.xml");
        Console.WriteLine(c.GetEnglish("Label1"));
        Console.WriteLine(c.GetEnglish("Button1"));
        Console.WriteLine(c.GetDanish("Label1"));
        Console.WriteLine(c.GetDanish("Button1"));
    }
}
Avatar billede claus_n_p Nybegynder
24. marts 2005 - 15:13 #6
Ser ud som det jeg mangler - vil dog vente til i morgen med afprøvning, sidder i det fjerne østen og det er blevet sent.
Takker i første omgang
Avatar billede claus_n_p Nybegynder
29. marts 2005 - 03:31 #7
Tog lidt længere tid, men lige hvad jeg skal bruge - du kaster et svar og jeg takker mange gange

mvh
Claus
Avatar billede arne_v Ekspert
29. marts 2005 - 07:27 #8
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