Forum di AAC   |      Messaggi privati   |      English



ArcadiA Club
ArcadiA Club


Fai una domanda     Collabora con AAC     Inserisci un commento     Richiedi un articolo     Vota un sondaggio   



Home Page   Home Page
programmazione.htm   Programmazione - FORUM sezione  Vai al FORUM
 
Username:
Password:
Iscriviti!  |  Recupero password



Iscriviti GRATIS, potrai navigare senza questa
fascia e accedere a contenuti esclusivi:

    E-Mail:

Password:



 
 

 
- 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.
Per prima cosa è necessario creare un oggetto System.Xml.XmlDocument che rappresenterà l'intero file XML con tutte le sue caratteristiche:


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.
La prima funzione che andiamo ad analizzare è GetElementById: attraverso di essa è possibile ottenere un oggetto XmlElement che rappresenta la tag nel documento XML con l'ID specificato:

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.
Quindi se ad esempio si richiamasse

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.
XmlElement espone inoltre il metodo GetAttribute che restituisce il valore di un attributo della tag in questione prendendo come parametro il nome dell'attributo stesso:


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  


Dì la tua: cosa ne pensi?
Esponi il tuo punto di vista e condividilo con migliaia di persone

Oggetto nuova discussione:


Testo del messaggio:

E-Mail:





Una discussione di questa sezione

Secondo voi...

per fondare una software house o semplicemente lavorarci si deve essere necessariamente laureati??

LEGGI TUTTA LA DISCUSSIONE


Risposta 1

no, però se ci lavori sappi che ti pagheranno sempre pochissimo rispetto a quanto prenderesti da laureato.

LEGGI TUTTE LE RISPOSTE


Risposta 2

Ah ok... ma anche se sei un genio più bravo di uno laureato??? CHE MONDO CRUDELE XD

LEGGI TUTTE LE RISPOSTE

 

Aggiungi ai tuoi preferiti 
Aggiungi a del.icio.us  Aggiungi a Technorati  Aggiungi a Furl  Aggiungi a OKNO  Segnala su Wikio  Segnala su upnews  Segnala su Diggita  Segnala su ZicZac  Segnala su Kipapa  Segnala su Digg  Segnala su Pligg  Segnala su Segnalo  Segnala su Live  Segnala su Google  Segnala su Facebook  Segnala su StumbleUpon  Segnala su Ask  Segnala su reddit  Segnala su Technotizie 

 




^ TOP  
Linkaci | Segnala errore | Invita | Stampa


pubblicità | regole | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2010 - Grafica, layout e contenuti sono di esclusiva proprietà di ArcadiA Club.

Powered by:
Spazi pubblicitari di alto livello
 

Compra in un click! | Cerca prodotti in offerta: