webForumDet fria alternativet

XmlSerializer och DeSerializer?

2 svar · 402 visningar · startad av voigtann1

voigtann1Medlem sedan juni 20019 519 inlägg
#1

kan man göra en klass för att få datan ur:
http://wow.allakhazam.com/dev/wow/item-xml.pl?witem=18282 ?

MrAnderssonMedlem sedan nov. 20061 inlägg
#2

Väldigt lätt med .Net 2.0.

Skapa en klass. För varje xml-element i xml-filen så skapar du en public variabel med exakt samma namn som xml-elementet. Stora och små bokstäver måste stämma med.

i C#:

[System.Xml.Serialization.XmlRoot("wowitem")]
    public class Wowitem
    {
        public string id = "" ;
        public string arcane_resist = "" ;
        public string armor = "" ;
        public string binds = "" ;
        public string block = "" ;
        public string buyprice = "" ;
        public string classes = "" ;
        public string common_mob = "" ;
        public string common_percent = "" ;
        public string depreciated = "" ;
        public string description = "" ;
        public string display_html = "" ;
        public string displayinfo = "" ;
        public string dmg_high = "" ;
        public string dmg_high2 = "" ;
        public string dmg_high3 = "" ;
        public string dmg_low = "" ;
        public string dmg_low2 = "" ;
        public string dmg_low3 = "" ;
        public string dmg_resist = "" ;
        public string dmg_resist2 = "" ;
        public string dmg_resist3 = "" ;
        public string entered = "" ;
        public string fire_resist = "" ;
        public string first = "" ;
        public string frost_resist = "" ;
        public string gemid = "" ;
        public string holy_resist = "" ;
        public string icon = "" ;
        public string image = "" ;
        public string iscrafted = "" ;
        public string isqfodder = "" ;
        public string isquested = "" ;
        public string israid = "" ;
        public string isstatic = "" ;
        public string isvendor = "" ;
        public string isworld = "" ;
        public string itemclass = "" ;
        public string itemid = "" ;
        public string itemsubclass = "" ;
        public string level = "" ;
        public string minlevel = "" ;
        public string name1 = "" ;
        public string name2 = "" ;
        public string name3 = "" ;
        public string name4 = "" ;
        public string nature_resist = "" ;
        public string newest = "" ;
        public string notes = "" ;
        public string quality = "" ;
        public string quest_id_a = "" ;
        public string quest_id_b = "" ;
        public string races = "" ;
        public string randprop = "" ;
        public string recskill_amount = "" ;
        public string recskill_skill = "" ;
        public string req_spell = "" ;
        public string reqfaction = "" ;
        public string reqfactionlvl = "" ;
        public string reqpvprank = "" ;
        public string sellprice = "" ;
        public string setid = "" ;
        public string shadow_resist = "" ;
        public string slot = "" ;
        public string slots = "" ;
        public string socket_1 = "" ;
        public string socket_2 = "" ;
        public string socket_3 = "" ;
        public string socketbonus = "" ;
        public string source = "" ;
        public string speed = "" ;
        public string spellact1 = "" ;
        public string spellact2 = "" ;
        public string spellact3 = "" ;
        public string spellcooldown1 = "" ;
        public string spellcooldown2 = "" ;
        public string spellcooldown3 = "" ;
        public string spellcoolgroup1 = "" ;
        public string spellcoolgroup2 = "" ;
        public string spellcoolgroup3 = "" ;
        public string spellcoolgrouptime1 = "" ;
        public string spellcoolgrouptime2 = "" ;
        public string spellcoolgrouptime3 = "" ;
        public string spelleffect1 = "" ;
        public string spelleffect2 = "" ;
        public string spelleffect3 = "" ;
        public string stacksize = "" ;
        public string startquest = "";
        public string stat1_stat = "" ;
        public string stat1_value = "" ;
        public string stat2_stat = "" ;
        public string stat2_value = "" ;
        public string stat3_stat = "" ;
        public string stat3_value = "" ;
        public string stat4_stat = "" ;
        public string stat4_value = "" ;
        public string stat5_stat = "" ;
        public string stat5_value = "" ;
        public string total_drops = "" ;
        public string total_percent = "" ;
        public string unique = "" ;
        public string unknown_101 = "" ;
        public string unknown_102 = "" ;
        public string unknown_103 = "" ;
        public string unknown_109 = "" ;
        public string unknown_110 = "" ;
        public string unknown_111 = "" ;
        public string unknown_112 = "" ;
        public string unknown_113 = "" ;
        public string unknown_114 = "" ;
        public string unknown_115 = "" ;
        public string unknown_117 = "" ;
        public string unknown_119 = "" ;
        public string unknown_121 = "" ;
        public string unknown_123 = "" ;
        public string unknown_124 = "" ;
        public string unknown_125 = "" ;
        public string unknown_31 = "" ;
        public string unknown_32 = "" ;
        public string unknown_33 = "" ;
        public string unknown_34 = "" ;
        public string unknown_35 = "" ;
        public string unknown_36 = "" ;
        public string unknown_37 = "" ;
        public string unknown_38 = "" ;
        public string unknown_39 = "" ;
        public string unknown_40 = "" ;
        public string unknown_50 = "" ;
        public string unknown_51 = "" ;
        public string unknown_52 = "" ;
        public string unknown_53 = "" ;
        public string unknown_54 = "" ;
        public string unknown_55 = "" ;
        public string unknown_63 = "" ;
        public string unknown_67 = "" ;
        public string unknown_73 = "" ;
        public string unknown_79 = "" ;
        public string unknown_8 = "" ;
        public string unknown_83 = "" ;
        public string unknown_84 = "" ;
        public string unknown_85 = "" ;
        public string unknown_86 = "" ;
        public string unknown_87 = "" ;
        public string unknown_88 = "" ;
        public string unknown_89 = "" ;
        public string unknown_90 = "" ;
        public string unknown_91 = "" ;
        public string unknown_92 = "" ;
        public string unknown_93 = "" ;
        public string unknown_94 = "" ;
        public string unknown_97 = "" ;
        public string unknown_98 = "" ;
        public string unknown_99 = "" ;
        public string updated = "" ;
        public string version = "" ;
        
        public Wowitem()
        { 
        }
    }

För att ladda:

            Wowitem s = new Wowitem();
            XmlSerializer serializer = new XmlSerializer(typeof(Wowitem));
            // Öppna en ström att deserializera ifrån
            StreamReader objstreamReader = new StreamReader("c:\\test.xml");
            // Deserializera strömmen till ett object, som vi castar till Wowitem.
            s = (Wowitem)serializer.Deserialize(objstreamReader);
            objstreamReader.Close();

            // Manipulera objektet. Sen spara igen, till en annan fil för att kunna gämföra skillnaderna
            s.description = "Good stuff";
            StreamWriter writer = new StreamWriter("c:\\text2.xml");
            serializer.Serialize(writer, s);
            writer.Close();
voigtann1Medlem sedan juni 20019 519 inlägg
#3

Tackar :D ska kolla igenom detta sen :D

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)