NIB: scrittura di attributi

I metodi WriteAttributeString, WriteStartAttribute e WriteAttributes sono appositamente progettati per la creazione di attributi.Questi metodi consentono di scrivere attributi in nodi elemento.È possibile utilizzare i metodi per la scrittura di attributi anche per creare dichiarazioni dello spazio dei nomi in un elemento.Per ulteriori informazioni, vedere NIB: gestione dello spazio dei nomi in XmlWriter.

WriteAttributeString

Il metodo WriteAttributeString rappresenta il modo più semplice per scrivere un attributo.Viene utilizzato per scrivere un intero nodo attributo, incluso un valore di stringa.Nel codice seguente viene aggiunto un attributo (supplierID) e un valore (A23-1) a un elemento XML (Product):

Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Product")
        writer.WriteAttributeString("supplierID", "A23-1")
        writer.WriteElementString("ProductID", "12345")
        writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Product");
    writer.WriteAttributeString("supplierID", "A23-1");
    writer.WriteElementString("ProductID", "12345");
    writer.WriteEndElement();
}

Il codice precedente scrive nella console quanto segue:

<Product supplierID="A23-1">
  <ProductID>12345</ProductID>
</Product>

WriteStartAttribute

Il metodo WriteStartAttribute è una versione più avanzata del metodo WriteAttributeString.Consente di scrivere il valore dell'attributo usando più chiamate al metodo.Ad esempio, è possibile utilizzare WriteValue per scrivere un valore tipizzato.

L'attributo viene chiuso mediante una chiamata al metodo WriteEndAttribute.

Nel codice seguente, hireDate è un oggetto DateTime che contiene la data di assunzione di un dipendente.Il codice scrive un attributo relativo alla data di revisione contenente il valore calcolato della data di revisione di 6 mesi del dipendente.

Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Employee")
    writer.WriteStartAttribute("review-date")
    writer.WriteValue(hireDate.AddMonths(6))
    writer.WriteEndAttribute()
    writer.WriteElementString("EmployeeID", "12345")
    writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Employee");
    writer.WriteStartAttribute("review-date");
    writer.WriteValue(hireDate.AddMonths(6));
    writer.WriteEndAttribute();
    writer.WriteElementString("EmployeeID", "12345");
    writer.WriteEndElement();
}

Il codice precedente scrive nella console quanto segue:

<Employee review-date="2008-11-20T00:00:00">
  <EmployeeID>12345</EmployeeID>
</Employee>

WriteAttributes

Il metodo WriteAttributes consente di copiare tutti gli attributi rilevati nella posizione corrente dell'oggetto XmlReader fornito.Il comportamento del metodo WriteAttributes dipende dal tipo di nodo su cui è attualmente posizionato il lettore.

Nella tabella seguente vengono descritti i risultati della chiamata al metodo WriteAttributes per ciascun tipo di nodo.Se il lettore è posizionato su un tipo di nodo che non è elencato nella tabella seguente, il metodo WriteAttributes non esegue alcuna operazione.

Tipo di nodo

Comportamento di WriteAttributes

Attribute

Scrive l'attributo corrente, quindi gli attributi rimanenti fino al tag di chiusura dell'elemento.

Element

Scrive tutti gli attributi contenuti nell'elemento.

Dichiarazione XML

Scrive tutti gli attributi nella dichiarazione.

Ad esempio, nel codice seguente vengono copiati nel writer tutti gli attributi rilevati nella posizione corrente del lettore.

Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("root")
    writer.WriteAttributes(reader, True)
    writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{

    writer.WriteStartElement("root");
    writer.WriteAttributes(reader, true);
    writer.WriteEndElement();

}

Il codice utilizza il file XML seguente (book.xml):

<?xml version="1.0" ?>
<book genre="autobiography" 
      publicationdate="1981" 
      ISBN="1-861003-11-0">Book Title</book>

Il codice precedente scrive nella console quanto segue:

<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />

Vedere anche

Altre risorse

Scrittura di XML con XmlWriter