Lettura di attributi
La classe XmlReader fornisce diversi metodi e proprietà per la lettura di attributi. Gli attributi si trovano soprattutto all'interno degli elementi. Tuttavia, sono consentiti anche in dichiarazioni XML e in nodi di tipo Document.
Lettura degli attributi sugli elementi
Quando vengono posizionati sul nodo di un elemento, i metodi MoveToAttribute consentono di esplorare l'elenco di attributi dell'elemento. Dopo che è stato chiamato il metodo MoveToAttribute, le proprietà dei nodi quali, ad esempio, Name, NamespaceURI, Prefix e così via, riflettono le proprietà di tale attributo e non dell'elemento contenente a cui appartiene.
Nella tabella seguente vengono descritti i metodi e le proprietà progettati specificatamente per l'elaborazione di attributi.
Nome membro |
Descrizione |
---|---|
Ottiene il numero di attributi sull'elemento corrente. |
|
Ottiene il valore dell'attributo. |
|
Ottiene un valore che indica se il nodo corrente dispone di attributi. |
|
Ottiene un valore che indica se il nodo corrente è un attributo generato in base al valore predefinito configurato nella definizione DTD o nello schema. |
|
Ottiene il valore dell'attributo specificato. |
|
Si sposta sull'attributo specificato. |
|
Si sposta sull'elemento che possiede il nodo dell'attributo corrente. |
|
Si sposta in corrispondenza del primo attributo. |
|
Si sposta n corrispondenza dell'attributo successivo. |
|
Analizza il valore dell'attributo in uno o più nodi di tipo Text, EntityReference o EndEntity. |
Per elaborare gli attributi è possibile utilizzare anche qualsiasi metodo e proprietà generale del tipo XmlReader. Dopo che il tipo XmlReader è stato posizionato in corrispondenza di un attributo, ad esempio, le proprietà Name e Value riflettono i valori dell'attributo. È inoltre possibile utilizzare qualsiasi metodo Read del contenuto per ottenere il valore dell'attributo.
Lettura di attributi su altri tipi di nodo
Lo scenario più comune è l'elaborazione di attributi su nodi di tipo Element. È inoltre possibile trovare attributi in dichiarazioni XML e dichiarazioni del tipo di documento (DTD).
Nota |
---|
Quando il tipo XmlReader è posizionato in corrispondenza di un nodo di istruzioni di elaborazione, la proprietà Value restituisce l'intero contenuto di testo.Gli elementi nel nodo di istruzioni di elaborazione vengono considerati come attributi.Non è possibile leggerli con i metodi GetAttribute o MoveToAttribute. |
Nodo della dichiarazione XML
Quando la proprietà Value è posizionata in corrispondenza di una dichiarazione XML, le informazioni relative alla versione, al file autonomo e alla codifica vengono restituite come stringa unica. In alcuni lettori le informazioni relative alla versione, al file autonomo e alla codifica possono essere esposte anche come attributi.
Nota |
---|
Gli oggetti XmlReader creati dal metodo Create e le classi XmlTextReader e XmlValidatingReader espongono le informazioni relative alla versione, al file autonomo e alla codifica come attributi. |
Nodo di tipo di documento
Quando il tipo XmlReader è posizionato su un nodo di tipo di documento, è possibile utilizzare il metodo GetAttribute e la proprietà Item per restituire i valori per le rappresentazioni formali SYSTEM e PUBLIC. Ad esempio, la chiamata al metodo reader.GetAttribute("PUBLIC") restituisce il valore PUBLIC.
Esempi
Nell'esempio seguente vengono letti tutti gli attributi in un elemento utilizzando la proprietà AttributeCount.
' Display all attributes.
If reader.HasAttributes Then
Console.WriteLine("Attributes of <" + reader.Name + ">")
Dim i As Integer
For i = 0 To (reader.AttributeCount - 1)
Console.WriteLine(" {0}", reader(i))
Next i
' Move the reader back to the element node.
reader.MoveToElement()
End If
// Display all attributes.
if (reader.HasAttributes) {
Console.WriteLine("Attributes of <" + reader.Name + ">");
for (int i = 0; i < reader.AttributeCount; i++) {
Console.WriteLine(" {0}", reader[i]);
}
// Move the reader back to the element node.
reader.MoveToElement();
}
Nell'esempio seguente vengono letti tutti gli attributi in un elemento utilizzando il metodo MoveToNextAttribute in un ciclo While.
If reader.HasAttributes Then
Console.WriteLine("Attributes of <" + reader.Name + ">")
While reader.MoveToNextAttribute()
Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
End While
' Move the reader back to the element node.
reader.MoveToElement()
End If
if (reader.HasAttributes) {
Console.WriteLine("Attributes of <" + reader.Name + ">");
while (reader.MoveToNextAttribute()) {
Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
}
// Move the reader back to the element node.
reader.MoveToElement();
}
Nell'esempio seguente viene ottenuto il valore di un attributo in base al nome.
reader.ReadToFollowing("book")
Dim isbn As String = reader.GetAttribute("ISBN")
Console.WriteLine("The ISBN value: " + isbn)
reader.ReadToFollowing("book");
string isbn = reader.GetAttribute("ISBN");
Console.WriteLine("The ISBN value: " + isbn);