- Muoversi in un file XML - |
|||
COSA SERVE PER QUESTO TUTORIAL | |||
Download | Chiedi sul FORUM | Glossario | un compilatore per vb.net | ||
Muoversi in un albero XML con System.Xml.XmlDocument e XmlElement | |||
MUOVERSI IN UN FILE XML Alcune semplici e utili funzioni per agire su un file XML. Vediamo
come, attraverso lo spazio di nomi System.Xml, ci si possa muovere
agilmente all'interno dell'albero di un file XML. Dim xmlDocument As New Xml.XmlDocument() xmlDocument.Load(strFileLocation) Nella riga appena sopra, attraverso il metodo Load con parametro il percorso
completo del file XML, diamo istruzione di controllare la validità del documento
e quindi di caricarlo in memoria. Dim elmCustomer As Xml.XmlElement = xmlDocument.GetElementById(strCustomerID) Attenzione: per ID non si intende semplicemente un attributo di nome ID ma un attributo che sia definito nel DTD del file XML come ID, infatti all'interno del DOCTYPE di customers.xml troviamo <!ATTLIST customer ID ID #REQUIRED> dove il primo ID indica il nome
dell'attributo mentre il secondo il tipo, ovvero un identificatore
univoco. xmlDocument.GetElementById("C100") verrebbe restituito un riferimento al tag <customer ID="C100"> In alternativa a GetElementById è spesso utile utilizzare GetElementsByTagName, funzione che restituisce una lista di oggetti XmlElement formata da tutte le tag con il nome specificato: Dim elmNameInfo As Xml.XmlElement = elmCustomer.GetElementsByTagName("name").Item(0) In questo caso si è certi che vi è un solo elemento di nome "name", per questo è stato specificato di restituire un riferimento al primo (e unico) della lista. Nel caso vi fossero più tag con lo stesso nome, per analizzarle una ad una è sufficiente farle ciclare man mano incrementando l'indice (che nell'esempio sopra è 0) fino a elmCustomer.GetElementsByTagName("name").Count che indica il totale di tag con quel nome. GetElementById e GetElementsByTagName
sono disponibili sia attraverso l'oggetto XmlElement che
XmlDocument, nel primo caso limitando la
ricerca ai nodi figlio del tag corrente. Console.WriteLine("Nome: " & elmNameInfo.GetAttribute("first")) Console.WriteLine("Cognome: " & elmNameInfo.GetAttribute("surname")) Infine XmlElement fornisce un'altra proprietà molto interessante: ChildNodes. Essa restituisce la lista degli elementi figli di quello corrente, che è possibile enumerare come segue (e come anche già spiegato per GetElementsByTagName): Dim C1 As Integer For C1 = 0 To elmItems.ChildNodes.Count - 1 Console.WriteLine(elmItems.ChildNodes(C1).InnerText) Next C1 Se si nota, in questo ultimo esempio è stata utilizzata la proprietà InnerText di XmlElement: essa restituisce il testo puro (quindi privo di tag XML) contenuto nell'elemento in questione.
|
|||
<< INDIETRO | by VeNoM00 |