Snippet per la lettura di un attributo XML

Molte volte è necessario leggere un file XML in modo programmatico, mappando ad esempio attributi di un nodo xml in campi del proprio object model. Questo snippet di codice permette di leggere un attributo di un nodo, convertirlo nel tipo desiderato e nel caso in cui l'attributo non esista o il relativo valore sia non convertibile nel tipo di destinazione, utilizzare un valore di default.

class XmlHelpers{ public static T GetAttribute<T>(XmlNode node ,string attributeName ,T defaultValue ){ T rtn = defaultValue; XmlAttribute attr = node.Attributes[attributeName]; if (attr != null) { Type type = typeof(T); if (type == typeof(string)) return (T)((object)attr.InnerText); TypeConverter converter = TypeDescriptor.GetConverter(type); try{ object result = converter.ConvertFromString(attr.InnerText); if (result is T) rtn = (T)result; }catch (System.FormatException){} } return rtn; } }

Per richiamarlo posso scrivere ad esempio:

Foo f = new Foo(); f.PropA = XmlHelpers.GetAttribute<bool>(fooNode, "A", false);

posted @ Monday, November 6, 2006 4:19 PM

Print

Comments on this entry:

# re: Snippet per la lettura di un attributo XML

Left by Davide Mauri at 11/6/2006 4:58 PM
Gravatar
Usare "catch (Exception){}" non è consigliabile. E' molto meglio intercettare le eccezioni "previste" e lasciare quelle impreviste al loro destino. Se ci fosse una "OutOfMemoryException" il codice in questione nasconderebbe l'errore....

# re: Snippet per la lettura di un attributo XML

Left by Cristian Bressan at 11/6/2006 5:07 PM
Gravatar
Errata Corrige su segnalazione di Davide.

# re: Snippet per la lettura di un attributo XML

Left by Davide Mauri at 11/6/2006 5:50 PM
Gravatar
:-)

# re: Snippet per la lettura di un attributo XML

Left by sohbet at 2/8/2009 2:01 PM
Gravatar

# re: Snippet per la lettura di un attributo XML

Left by wen at 10/30/2014 4:19 PM
Gravatar
perspective economy months system information check credit score banking director consumers
Comments have been closed on this topic.
«November»
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567