Condividi tramite


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

AttributeCount

Ottiene il numero di attributi sull'elemento corrente.

GetAttribute

Ottiene il valore dell'attributo.

HasAttributes

Ottiene un valore che indica se il nodo corrente dispone di attributi.

IsDefault

Ottiene un valore che indica se il nodo corrente è un attributo generato in base al valore predefinito configurato nella definizione DTD o nello schema.

Item

Ottiene il valore dell'attributo specificato.

MoveToAttribute

Si sposta sull'attributo specificato.

MoveToElement

Si sposta sull'elemento che possiede il nodo dell'attributo corrente.

MoveToFirstAttribute

Si sposta in corrispondenza del primo attributo.

MoveToNextAttribute

Si sposta n corrispondenza dell'attributo successivo.

ReadAttributeValue

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).

NotaNota

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.

NotaNota

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);

Vedere anche

Concetti

Lettura di XML con XmlReader