XNode.CreateReader XNode.CreateReader XNode.CreateReader XNode.CreateReader Method

Definizione

Crea un oggetto XmlReader per questo nodo.Creates an XmlReader for this node.

Overload

CreateReader() CreateReader() CreateReader() CreateReader()

Crea un oggetto XmlReader per questo nodo.Creates an XmlReader for this node.

CreateReader(ReaderOptions) CreateReader(ReaderOptions) CreateReader(ReaderOptions)

Crea un oggetto XmlReader con le opzioni specificate dal parametro readerOptions.Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader() CreateReader() CreateReader() CreateReader()

Crea un oggetto XmlReader per questo nodo.Creates an XmlReader for this node.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader ();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader

Restituisce

XmlReader che può essere utilizzato per leggere questo nodo e i relativi discendenti.An XmlReader that can be used to read this node and its descendants.

Esempi

Nell'esempio seguente viene creato un albero XML, viene XmlReader creato un oggetto CreateReader utilizzando il metodo e viene XmlDocument creato un oggetto utilizzando il Reader.The following example creates an XML tree, creates an XmlReader by using the CreateReader method, and creates an XmlDocument by using the reader.

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);  
Dim xmlTree As XDocument =  _   
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>  
        <Root Att1="Attribute Content">  
            <Child1>1</Child1>  
            <Child2>2</Child2>  
        </Root>  
Dim reader As XmlReader = xmlTree.CreateReader()  
reader.MoveToContent()  
Dim doc As XmlDocument = New XmlDocument()  
Dim cd As XmlNode = doc.ReadNode(reader)  
doc.AppendChild(cd)  
Console.WriteLine(doc.OuterXml)  

Questo esempio produce il seguente output:This example produces the following output:

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

Un altro utilizzo di questo metodo consiste nell'eseguire una trasformazione XSLT.Another use for this method is to do an XSLT transformation. È 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.You can create an XML tree, create an XmlReader from the XML tree, create a new document, and create an XmlWriter that will write into the new document. Quindi, è possibile richiamare la trasformazione XSLT, passando XmlReader e XmlWriter alla trasformazione.Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. Dopo il completamento della trasformazione, il nuovo albero XML viene popolato con i relativi risultati.After the transformation successfully completes, the new XML tree is populated with the results of the transform.

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);  
Dim xslMarkup As XDocument = _   
    <?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>  

Dim xmlTree As XElement = _   
        <Parent>  
            <Child1>Child1 data</Child1>  
            <Child2>Child2 data</Child2>  
        </Parent>  

Dim newTree As XDocument = New XDocument()  

Using writer As XmlWriter = newTree.CreateWriter()  
    ' Load the style sheet.  
    Dim xslt As XslCompiledTransform = _  
        New XslCompiledTransform()  
    xslt.Load(xslMarkup.CreateReader())  

    ' Execute the transform and output the results to a writer.  
    xslt.Transform(xmlTree.CreateReader(), writer)  
End Using  

Console.WriteLine(newTree)  

Questo esempio produce il seguente output:This example produces the following output:

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

Commenti

Questo metodo viene in genere usato quando è necessario fornire un altro componente con XmlReaderun oggetto.You typically use this method when you have to supply another component with an XmlReader. Ad esempio, è possibile creare un XmlReader oggetto da LINQ to XMLLINQ to XML un albero e quindi passare il lettore a Load.For example, you can create an XmlReader from a LINQ to XMLLINQ to XML tree, and then pass that reader to Load.

Tutti i lettori restituiti da Create eseguono la normalizzazione dei lettori.All of the readers returned by Create are normalizing readers. Eseguono sempre la normalizzazione delle interruzioni di riga e la normalizzazione completa degli attributi.They always perform line break normalization and full normalization of attributes. Al contrario, l' XmlReader oggetto restituito CreateReader da non è un lettore di normalizzazione.In contrast, the XmlReader returned by CreateReader is not a normalizing reader. Non trasforma alcuno spazio vuoto.It does not transform any white space. Restituisce anche gli attributi nell'ordine in cui sono stati aggiunti, non nell'ordine dei nomi di attributo.It also returns attributes in the order that they were added, not in attribute name order.

LINQ to XMLLINQ to XMLnon mantiene informazioni sul fatto che gli attributi siano attributi predefiniti.does not keep information about whether attributes are default attributes. IsDefaultrestituirà sempre false, indipendentemente dal fatto che l'attributo sia stato popolato da un valore predefinito.IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

Gli PUBLIC pseudo SYSTEM attributi e in XDocumentType non sono disponibili tramite il XmlReader.MoveToAttribute metodo.The PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. Sono disponibili solo tramite il XmlReader.GetAttribute metodo che accetta il nome completo dell'attributo come parametro.They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. Se è necessario recuperare gli PUBLIC attributi o SYSTEM , è necessario usare il XmlReader.GetAttribute metodo.If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

I dati Base64 e BinHex non sono supportati.Base64 and BinHex data are not supported. Se si tenta di recuperare questi tipi di dati (ad esempio, chiamando ReadElementContentAsBase64), il lettore NotSupportedExceptiongenererà un'operazione.If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

La xml dichiarazione non viene rilevata dal reader.The xml declaration is not surfaced by the reader. Durante la lettura, non si verificherà alcun nodo di XmlDeclarationtipo.While reading, you will not encounter a node of type XmlDeclaration.

Vedi anche

CreateReader(ReaderOptions) CreateReader(ReaderOptions) CreateReader(ReaderOptions)

Crea un oggetto XmlReader con le opzioni specificate dal parametro readerOptions.Creates an XmlReader with the options specified by the readerOptions parameter.

public:
 System::Xml::XmlReader ^ CreateReader(System::Xml::Linq::ReaderOptions readerOptions);
public System.Xml.XmlReader CreateReader (System.Xml.Linq.ReaderOptions readerOptions);
member this.CreateReader : System.Xml.Linq.ReaderOptions -> System.Xml.XmlReader

Parametri

readerOptions
ReaderOptions ReaderOptions ReaderOptions ReaderOptions

Oggetto ReaderOptions che specifica se omettere gli spazi dei nomi duplicati.A ReaderOptions object that specifies whether to omit duplicate namespaces.

Restituisce

Si applica a