Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo XmlWriter.WriteNode (XmlReader, Boolean)

 

Data di pubblicazione: ottobre 2016

Quando ne viene eseguito l'override in una classe derivata, copia tutto il contenuto del lettore nel writer e sposta il lettore all'inizio del successivo elemento di pari livello.

Spazio dei nomi:   System.Xml
Assembly:  System.Xml (in System.Xml.dll)

public virtual void WriteNode(
	XmlReader reader,
	bool defattr
)

Parametri

reader
Type: System.Xml.XmlReader

XmlReader da cui leggere.

defattr
Type: System.Boolean

true Per copiare gli attributi predefiniti dal XmlReader; in caso contrario, false.

Exception Condition
ArgumentNullException

reader è null.

ArgumentException

reader contiene caratteri non validi.

InvalidOperationException

Un XmlWriter metodo è stato chiamato prima del completamento di un'operazione asincrona precedente. In questo caso, InvalidOperationException viene generata con il messaggio "un'operazione asincrona è già in corso."

Nella tabella seguente illustra i tipi di nodo supportati per questo metodo.

NodeType

Comportamento di WriteNode

None

Scrive tutti i nodi, indipendentemente dal tipo. Il writer utilizzerà il XmlReader e scriverà tutti i nodi letti, inclusi attributi, istruzioni di elaborazione, commenti e così via.

Questa situazione si verifica quando il XmlReader si trova nello stato iniziale. (Il XmlReader.ReadState restituisce ReaderState.Initial).

Element

Scrive il nodo dell'elemento e gli eventuali nodi attributo.

Attribute

Nessuna operazione. In sostituzione usare WriteStartAttribute o WriteAttributeString.

Text

Scrive il nodo testo.

CDATA

Scrive il nodo della sezione CDATA.

EntityReference

Scrive il nodo di riferimento di entità.

ProcessingInstruction

Scrive il nodo istruzione di elaborazione.

Comment

Scrive il nodo di commento.

DocumentType

Scrive il nodo di tipo di documento.

SignificantWhitespace

Scrive il nodo spazio vuoto significativo.

Whitespace

Scrive il nodo con spazi vuoti.

EndElement

Scrive il tag di fine dell'elemento.

EndEntity

Nessuna operazione.

XmlDeclaration

Scrive il nodo della dichiarazione XML.

Se il lettore è nello stato iniziale, questo metodo il lettore si sposta alla fine del file. Se il lettore è già alla fine del file o in uno stato chiuso, questo metodo è non operativo.

Il codice c# seguente consente di copiare un intero documento di input XML nella console:

XmlReader reader = XmlReader.Create(myfile);
XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteNode(reader, false);

Se è stato spostato dal nodo radice e posizionati in un' posizione nel documento di che esempio c# seguente scrive in modo corretto i nodi.

XmlReader reader = XmlReader.Create(myfile);
reader.Read(); // Read PI
reader.Read(); // Read Comment
reader.Read(); // Read DOCType
XmlWriter writer = XmlWriter.Create(Console.Out);
while (!reader.EOF){
  writer.WriteNode(reader, false);
 }

Se il lettore è configurato per restituire gli spazi vuoti e il writer è configurato per impostare un rientro output, WriteNode può produrre output strano. È essenzialmente otterrà double formattazione.

Per la versione asincrona del metodo, vedere WriteNodeAsync.

Nell'esempio seguente scrive i nodi libro e il cognome nella console.

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    XmlTextReader reader = new XmlTextReader("books.xml");
    reader.WhitespaceHandling = WhitespaceHandling.None;

    //Move the reader to the first book element.
    reader.MoveToContent();
    reader.Read();

    //Create a writer that outputs to the console.
    XmlTextWriter writer = new XmlTextWriter (Console.Out);
    writer.Formatting = Formatting.Indented;

    //Write the start tag.
    writer.WriteStartElement("myBooks");

    //Write the first book.
    writer.WriteNode(reader, false);

    //Skip the second book.
    reader.Skip();

    //Write the last book.
    writer.WriteNode(reader, false);
    writer.WriteEndElement();

    //Close the writer and the reader.
    writer.Close();
    reader.Close();

  }
}

Nell'esempio viene utilizzato il file, books.xml, come input.

<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: