Accesso alla proprietà BaseUri negli XObject (Linq to Xml)
Scritto da
Marco Amendola il
giovedì 17 giugno 2010
•
Linguaggio:
• Livello: 200
Gli oggetti XmlNode contenuti in un DOM
(System.Xml.XmlDocument) possiedono una proprietà BaseURI
che contiene la posizione da cui tale nodo è stato caricato. Se il
DOM viene caricato da un server http, ad esempio, BaseURI conterrà
un Uri del tipo "http://server/file.xml" per ognuno dei nodi di cui
è composto il documento Xml. La proprietà BaseURI è utile, nei casi
in cui un documento sia composto da parti provenienti da fonti
diverse, ad identificare la radice di eventuali Uri relativi
presenti nel documento stesso.
Se per manipolare Xml si utilizzano le classi di "Linq To Sql"
(System.Xml.Linq) al posto del DOM, è possibile utilizzare
l'analoga proprietà BaseUri; in questo caso, però, occorre prestare
attenzione alla fase di caricamento dell'XDocument.
Per default, infatti, il caricamento non conserva l'informazione
della posizione di provenienza dell'Xml (in quanto ciò
richiederebbe una piccola penalizzazione delle prestazioni) e la
proprietà BaseUri restituisce sempre un valore nullo.
Per far sì che durante il caricamento venga mantenuta questa
informazione, rendendo significativi i valori di BaseUri, occorre
utilizzare nel metodo Load l'opzione
LoadOptions.SetBaseUri:
C#
XDocument myXDoc = XDocument.Load("http://server/file.xml", LoadOptions.SetBaseUri);
VB
Dim myXDoc As XDocument = XDocument.Load("http://server/file.xml", LoadOptions.SetBaseUri)
Tags: Linq,xml,baseuri