domenica 4 settembre 2011

linq xml rilevare i sottonodi di un preciso nodo VB.Net e C#

In questo esempio, vediamo come rilevare il valore dei sotto nodi, di un nodo, in cui l'attributo ha il valore "a".




Tramite linq to xml, e l'esecuzione di due query, possiamo ottenere i valori di determinati nodi, appartenenti ad altri nodi. Dopo aver rilevato il nodo denominato "Elemento", con l'attributo "nom" imposto a A, rilevo tutti i suoi sottonodi.




A questo punto ordino in maniera crescente i vari valori della query eseguita precedentemente e carico la dropdownlist




Qui di seguito si riporta il codice per il linguaggio VB.Net e C# ed il file XML




VB.Net




'rilevo l'elemento che ha il valore a dell'attributo nome




Dim percorso As String = HttpContext.Current.Server.MapPath("~/XMLFile1.xml")




Dim query = From el In XElement.Load(percorso).Elements("Elemento")




Where el.Attribute("nome").Value = "a"




Select el




 




'rilevo i valori per quell'elemento




Dim query2 = From ris In query.Descendants("Valore")




Select ris.Value




DropDownList1.DataSource = query2




DropDownList1.DataBind()




C#







//rilevo l'elemento che ha il valore a dell'attributo nome




string percorso = HttpContext.Current.Server.MapPath("~/XMLFile1.xml");




var query = from el in XElement.Load(@percorso).Elements("Elemento")




where el.Attribute("nome").Value == "a"




select el;




//rilevo i valori per quell'elemento




var query2 = from ris in query.Descendants("Valore")




select ris.Value.ToString();




DropDownList1.DataSource = query2;




DropDownList1.DataBind();










File XML







<?xml version="1.0" encoding="utf-8" ?>




<Dati>




<Elemento nome="a">




<Valore>testo a</Valore>




<Valore>testo2 a</Valore>




<Valore>testo3 a</Valore>




</Elemento>




<Elemento nome="b">




<Valore>testo b</Valore>




<Valore>testo2 b</Valore>




<Valore>testoe b</Valore>




</Elemento>




<Elemento nome="c">




<Valore>testo c</Valore>




<Valore>testo2 c</Valore>




</Elemento>




</Dati>

Nessun commento: