Degeim Skrevet 1. mai 2007 Del Skrevet 1. mai 2007 Hei For å laste inn et XML-dokument driver jeg nå med følgende idiotiske hendelsesforløp: a) Hent XML-dokument fra internett (da får jeg det i en string-variabel) b) Lagre variabelen til fil c) Opprett en IO.StreamReader som leser filen d) La XmlTextReaderen lese StreamReaderen. e) Opprett en Xml.XmlDocument med navn "Dokument" f) Dokument.Load([navnet på XmlTextReaderen]). Er det mulig å forenkle dette, i det minste fjerne lagring og åpning av dokument, og heller laste stringen med XML-dokumentinnholdet direkt inn i XmlDocumentet? Takk, Degeim Lenke til kommentar
Manfred Skrevet 1. mai 2007 Del Skrevet 1. mai 2007 (endret) XmlDocument.LoadXml(string xml) ? Hvis du da gjør det slik: XmlDocument xDoc = new XmlDocument(); using(System.Net.WebClient wc = new WebClient()) { xDoc.LoadXml(wc.DownloadString(url)); } Endret 1. mai 2007 av Manfred Lenke til kommentar
Spartakus Skrevet 2. mai 2007 Del Skrevet 2. mai 2007 Har ikke sett using blitt brukt på den måten før. Litt googling viste at den fungerer som en try/finally. Kan sikkert bli nyttig Lenke til kommentar
Manfred Skrevet 2. mai 2007 Del Skrevet 2. mai 2007 (endret) Det fungerer ikke som en try-catch, nei. Men WebClient-objectet disposes etter at scopet er kjørt. Alternativet (som vil gi det samme resultatet) er dette: System.Net.WebClient wc = new System.Net.WebClient(); xDoc.LoadXml(wc.DownloadString(url)); wc.Dispose(); Det er bare en god vane å bruke using for disposeable objekter som kun skal brukes i et begrenset scope Er det fare for Exceptions i webrequesten (noe det alltid vil være) må man likevel legge en try-cath rundt, som kan fange opp feilene. Så en forbedret kode av den jeg gav må vel bli: XmlDocument xDoc = new XmlDocument(); try { using(System.Net.WebClient wc = new WebClient()) { xDoc.LoadXml(wc.DownloadString(url)); } } catch(XmlException xexp) { //Behandle feil i xml } catch(WebException wexp) { //Behandle feil i web request } Endret 2. mai 2007 av Manfred Lenke til kommentar
kimo78 Skrevet 2. mai 2007 Del Skrevet 2. mai 2007 Microsoft beskriver det på denne måten: In other words, the using keyword simply maps to a try/finally construct that ensures the used object is always disposed. The code snippet just shown represents the typical expansion for the using keyword. You should note, however, that if a value type is used instead of a reference type, the compiler will not generate the check for a null value. Så på en måte fungerer det som Try uten at du kan Catch'e en exception, der dispose blir kallt i finally blokken. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå