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.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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.
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.
24. marts 2005 - 14:25
#3
Her kommer et eksempel som ligner dit meget.
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>
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")); } }
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
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
29. marts 2005 - 07:27
#8
ok
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.