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 XNode.CreateReader ()

 

Data di pubblicazione: ottobre 2016

Crea un XmlReader per questo nodo.

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

public XmlReader CreateReader()

Valore restituito

Type: System.Xml.XmlReader

Un XmlReader che può essere utilizzato per leggere questo nodo e dei relativi discendenti.

Utilizzare questo metodo in genere quando è necessario fornire un altro componente con un XmlReader. Ad esempio, è possibile creare un XmlReader da un LINQ to XML struttura ad albero e quindi passare tale lettore a Load.

Tutti i lettori restituiti da Create sono lettori di normalizzazione. Eseguono sempre la normalizzazione delle interruzioni di riga e la normalizzazione completa degli attributi. Al contrario, il XmlReader restituito da CreateReader non è un lettore di normalizzazione. Non trasforma gli spazi vuoti. Restituisce inoltre gli attributi nell'ordine in cui sono stati aggiunti, non in ordine di nome di attributo.

LINQ to XML informazioni sugli attributi predefiniti non vengono conservati. IsDefault Restituisce sempre false indipendentemente dal fatto che l'attributo è stato popolato da un valore predefinito o meno.

L'il PUBLIC e SYSTEM gli pseudo-attributi su XDocumentType non sono disponibili tramite il XmlReader.MoveToAttribute metodo. Sono disponibili solo tramite il XmlReader.GetAttribute metodo che accetta il nome completo dell'attributo come parametro. Se è necessario recuperare il PUBLIC o SYSTEM gli attributi, è necessario utilizzare il XmlReader.GetAttribute metodo.

Dati Base64 e BinHex non sono supportati. Se si tenta di recuperare questi tipi di dati (ad esempio, chiamando ReadElementContentAsBase64), il lettore genererà NotSupportedException.

Il xml dichiarazione non viene rilevata dal lettore. Durante la lettura, non si verificherà un nodo di tipo XmlDeclaration.

Nell'esempio seguente viene creato un albero XML, un XmlReader utilizzando il CreateReader (metodo) e crea un XmlDocument tramite il lettore.


                XDocument xmlTree = new XDocument(
    new XElement("Root",
        new XAttribute("Att1", "Attribute Content"),
        new XElement("Child1", 1),
        new XElement("Child2", 2)
    )
);
XmlReader reader = xmlTree.CreateReader();
reader.MoveToContent();
XmlDocument doc = new XmlDocument();
XmlNode cd = doc.ReadNode(reader);
doc.AppendChild(cd);
Console.WriteLine(doc.OuterXml);

Questo esempio produce il seguente output:


<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>

Utilizzare questo metodo è eseguire una trasformazione XSLT. È possibile creare un albero XML, creare un oggetto XmlReader dall'albero XML, creare un nuovo documento e infine creare un oggetto XmlWriter che scriverà nel documento nuovo. Quindi, è possibile richiamare la trasformazione XSLT, passando XmlReader e XmlWriter alla trasformazione. Dopo il completamento della trasformazione, il nuovo albero XML viene popolato con i relativi risultati.


                string xslMarkup = @"<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
    <xsl:template match='/Parent'>
        <Root>
            <C1>
            <xsl:value-of select='Child1'/>
            </C1>
            <C2>
            <xsl:value-of select='Child2'/>
            </C2>
        </Root>
    </xsl:template>
</xsl:stylesheet>";

XDocument xmlTree = new XDocument(
    new XElement("Parent",
        new XElement("Child1", "Child1 data"),
        new XElement("Child2", "Child2 data")
    )
);

XDocument newTree = new XDocument();
using (XmlWriter writer = newTree.CreateWriter()) {
    // Load the style sheet.
    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load(XmlReader.Create(new StringReader(xslMarkup)));

    // Execute the transform and output the results to a writer.
    xslt.Transform(xmlTree.CreateReader(), writer);
}

Console.WriteLine(newTree);

Questo esempio produce il seguente output:


                <Root>
  <C1>Child1 data</C1>
  <C2>Child2 data</C2>
</Root>

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
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: