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.
«September»
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345