XML è acronimo di Extensible Markup, ed è un linguaggio di markup molto simile a HTML o XHTML.
Il framework .Net contiene un namespace per la gestione dei documenti XML, si chiama System.Xml.
Vediamo le classi di questo namespace.
Classe | Descrizione |
---|---|
XmlAttribute | Rappresenta un attributo. |
XmlCDataSection | Rappresenta una sezione CDATA. |
XmlCharacterData | Fornisce metodi di manipolazione di testo. |
XmlComment | Rappresenta il contenuto di un commento XML. |
XmlConvert | Fornisce metodi per la conversione tra i tipi. |
XmlDeclaration | Rappresenta il nodo dichiarazione XML. |
XmlDictionary | Implementa un dizionario. |
XmlDictionaryReader | Una classe astratta per la serializzazione e deserializzazione derivante da XmlReader. |
XmlDictionaryWriter | Rappresenta una classe astratta per la serializzazione e deserializzazione derivante da XmlWriter. |
XmlDocument | Rappresenta un documento XML. |
XmlDocumentFragment | Rappresenta un frammento di documento. |
XmlDocumentType | Rappresenta la dichiarazione del tipo di documento. |
XmlElement | Rappresenta un elemento. |
XmlEntity | Rappresenta una dichiarazione di entità. |
XmlEntityReference | Rappresenta un nodo di riferimento entità. |
XmlException | Rappresenta un eccezione Xml. |
XmlImplementation | Definisce il contesto per un insieme di oggetti XmlDocument. |
XmlLinkedNode | Ottiene il nodo immediatamente precedente o successivo. |
XmlNode | Rappresenta un nodo nel documento XML. |
XmlNodeList | Rappresenta un insieme ordinato di nodi. |
XmlNodeReader | Rappresenta un lettore di nodi di un documento Xml. |
XmlNotation | Rappresenta una dichiarazione di notazione. |
XmlParserContext | Fornisce le informazioni di richieste dal XmlReader per analizzare un frammento XML. |
XmlProcessingInstruction | Rappresenta un'istruzione di elaborazione. |
XmlQualifiedName | Rappresenta un nome qualificato XML. |
XmlReader | Rappresenta un lettore di documenti XML. |
XmlReaderSettings | Specifica un set di impostazioni dell'oggetto XmlReader. |
XmlResolver | Risolve risorse XML esterne da un URI. |
XmlSecureResolver | Implementa la sicurezza su un XmlResolver. |
XmlSignificantWhitespace | Rappresenta spazio bianco tra markup. |
XmlText | Rappresenta il contenuto del testo di un elemento o attributo. |
XmlTextReader | Rappresenta un lettore di dati XML. |
XmlTextWriter | Rappresenta uno scrittore di dati XML |
XmlUrlResolver | Risolve risorse XML esterne tramite un URI. |
XmlWhitespace | Rappresenta degli spazi nel contenuto dell'elemento. |
XmlWriter | Rappresenta uno scrittore di dati XML. |
XmlWriterSettings | Specifica un set di impostazioni dell'oggetto XmlWriter. |
Secondo il Document Object Model (DOM), un documento XML è costituito da una serie di nodi e realtivi attributi.
Il framework .Net fornisce la classe XmlDocument utilizzate per implementare il parser del DOM XML.
Consente inoltre di modificare un documento XML esistente tramite inserimento, cancellazione o modifica dei dati.
Vediamo alcuni dei metodi piàù usati nalle classe XmlDocument
Metodo | Descrizione |
---|---|
AppendChild | Aggiunge il nodo specificato alla fine dell'elenco dei nodi. |
CreateAttribute | Crea un XmlAttribute con il nome specificato. |
CreateComment | Crea un XmlComment contenente i dati specificati. |
CreateDefaultAttribute | Crea un attributo predefinito. |
CreateElement | Crea un elemento con il nome specificato. |
CreateNode | Crea un XmlNode. |
CreateProcessingInstruction | Crea un XmlProcessingInstruction. |
CreateSignificantWhitespace | Crea un nodo XmlSignificantWhitespace. |
CreateTextNode | Crea un XmlText con il testo specificato. |
CreateWhitespace | Crea un nodo XmlWhitespace. |
CreateXmlDeclaration | Crea un nodo XmlDeclaration con i valori specificati. |
GetElementById | Ottiene l'elemento XmlElement a partire da un ID specificato. |
GetElementsByTagName | Restituisce un XmlNodeList contenente un elenco di tutti gli elementi discendenti che corrispondono ad un tag specificato. |
InsertAfter | Inserisce il nodo specificato dopo un determinato nodo. |
InsertBefore | Inserisce il nodo specificato prima di un un determinato nodo. |
Load | Carica il documento XML. |
LoadXml | Carica il documento XML dalla stringa specificata. |
PrependChild | Aggiunge il nodo specificato all'inizio dei nodi figlio di questo nodo. |
ReadNode | Crea un oggetto XmlNode in base alle informazioni in XmlReader. |
RemoveAll | Rimuove tutti i nodi figlio del nodo corrente. |
RemoveChild | Rimuove nodo figlio specificato. |
ReplaceChild | Sostituisce un nodo figlio con uno nuovo. |
Save | Salva il documento XML. |
Per gli esempi di questo capitolo consideriamo il seguente file XML, contenente una lista di libri:
<?xml version="1.0"?>
<books>
<book title="Libro 1">
<year>2016</year>
<author>Autore 1</author>
</book>
<book title="Libro 2">
<year>2016</year>
<author>Autore 2</author>
</book>
<book title="Libro 3">
<year>2016</year>
<author>Autore 3</author>
</book>
</books>
Imports System.Xml
Module esempioXml
Sub Main()
Dim setting As XmlWriterSettings = New XmlWriterSettings()
setting.Indent = True
setting.NewLineOnAttributes = False
Dim writer As XmlWriter = XmlWriter.Create("books.xml", setting)
xw.WriteStartDocument()
xw.WriteStartElement("books")
xw.WriteStartElement("book")
xw.WriteAttributeString("title", "Libro 1")
xw.WriteElementString("year", "2016")
xw.WriteElementString("author", "Autore 1")
xw.WriteEndElement()
xw.WriteStartElement("book")
xw.WriteAttributeString("title", "Libro 2")
xw.WriteElementString("year", "2016")
xw.WriteElementString("author", "Autore 2")
xw.WriteEndElement()
xw.WriteStartElement("book")
xw.WriteAttributeString("title", "Libro 3")
xw.WriteElementString("year", "2016")
xw.WriteElementString("author", "Autore 3")
xw.WriteEndElement()
xw.WriteEndElement()
xw.WriteEndElement()
xw.WriteEndDocument()
xw.Flush()
xw.Close()
End Sub
End Module
Creiamo un codumento xml contenente una lista di books
Imports System.Xml
Module esempioXml
Sub Main()
Dim xml As XmlReader = XmlReader.Create("books.xml")
Do While xml.Read()
If xml.NodeType = XmlNodeType.Element AndAlso xml.Name = "book" Then
Console.WriteLine(xml.GetAttribute(0))
End If
Loop
End Sub
End Module
Leggiamo un documento XML e per ogni "book", scriviamo in console l'attributo title
Imports System.Xml
Module esempioXml
Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.Load("books.xml")
Dim newBook As XmlElement = doc.CreateElement("book")
newBook.SetAttribute("title", "Libro 3")
Dim y As XmlElement = doc.CreateElement("year")
y.InnerText = "2016"
newBook.AppendChild(fn)
Dim a As XmlElement = doc.CreateElement("author")
a.InnerText = "Autore 3"
newBook.AppendChild(a)
doc.DocumentElement.AppendChild(newBook)
Dim writer As XmlTextWriter = New XmlTextWriter("movies.xml", Nothing)
writer.Formatting = Formatting.Indented
doc.WriteContentTo(writer)
writer.Close()
End Sub
End Module
Carichiamo il documento tramite l'oggetto XmlDocument ed aggiungiamo un nodo book alla lista dei nodi, quindi salviamo il file