Accesso alla proprietà BaseUri negli XObject (Linq to Xml)

Scritto da  Marco Amendola il giovedì 17 giugno 2010  •  Linguaggio: C#,VB   • 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

 
x