XNode.CreateReader Método

Definición

Crea un objeto XmlReader para este nodo.Creates an XmlReader for this node.

Sobrecargas

CreateReader()

Crea un objeto XmlReader para este nodo.Creates an XmlReader for this node.

CreateReader(ReaderOptions)

Crea una clase XmlReader con las opciones especificadas por el parámetro readerOptions.Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader()

Crea un objeto XmlReader para este 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

Devoluciones

Objeto XmlReader que se puede usar para leer este nodo y sus descendientes.An XmlReader that can be used to read this node and its descendants.

Ejemplos

En el ejemplo siguiente se crea un árbol XML, se crea un XmlReader mediante el método CreateReader y se crea un XmlDocument con el lector.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)  

En este ejemplo se produce la siguiente salida:This example produces the following output:

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

Otro uso para este método consiste en realizar una transformación XSLT.Another use for this method is to do an XSLT transformation. Puede crear un árbol XML, crear un objeto XmlReader desde el árbol XML, crear un nuevo documento y crear un objeto XmlWriter que escribirá en el nuevo documento.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. A continuación, puede invocar la transformación XSLT y pasar XmlReader y XmlWriter a la transformación.Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. Después de que se complete correctamente la transformación, se rellenará el nuevo árbol XML con los resultados de la transformación.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)  

En este ejemplo se produce la siguiente salida:This example produces the following output:

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

Comentarios

Normalmente, este método se usa cuando se tiene que proporcionar otro componente con una XmlReader.You typically use this method when you have to supply another component with an XmlReader. Por ejemplo, puede crear un XmlReader a partir de un árbol de LINQ to XMLLINQ to XML y, a continuación, pasar ese lector a Load.For example, you can create an XmlReader from a LINQ to XMLLINQ to XML tree, and then pass that reader to Load.

Todos los lectores devueltos por Create están normalizando los lectores.All of the readers returned by Create are normalizing readers. Siempre realizan la normalización de los saltos de línea y la normalización completa de los atributos.They always perform line break normalization and full normalization of attributes. Por el contrario, el XmlReader devuelto por CreateReader no es un lector normal.In contrast, the XmlReader returned by CreateReader is not a normalizing reader. No transforma ningún espacio en blanco.It does not transform any white space. También devuelve atributos en el orden en que se agregaron, no en el orden de los nombres de atributo.It also returns attributes in the order that they were added, not in attribute name order.

LINQ to XMLLINQ to XML no mantiene información sobre si los atributos son atributos predeterminados.does not keep information about whether attributes are default attributes. IsDefault siempre devolverá FALSE independientemente de si el atributo se ha rellenado a partir de un valor predeterminado o no.IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

Los atributos PUBLIC y SYSTEM de XDocumentType no están disponibles a través del método XmlReader.MoveToAttribute.The PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. Solo están disponibles a través del método XmlReader.GetAttribute que toma el nombre completo del atributo como parámetro.They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. Si tiene que recuperar los atributos PUBLIC o SYSTEM, debe utilizar el método XmlReader.GetAttribute.If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

No se admiten los datos Base64 y BinHex.Base64 and BinHex data are not supported. Si intenta recuperar estos tipos de datos (por ejemplo, llamando a ReadElementContentAsBase64), el lector producirá NotSupportedException.If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

La declaración de xml no está expuesta por el lector.The xml declaration is not surfaced by the reader. Durante la lectura, no encontrará un nodo de tipo XmlDeclaration.While reading, you will not encounter a node of type XmlDeclaration.

Consulte también:

CreateReader(ReaderOptions)

Crea una clase XmlReader con las opciones especificadas por el parámetro 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
Public Function CreateReader (readerOptions As ReaderOptions) As XmlReader

Parámetros

readerOptions
ReaderOptions

Objeto ReaderOptions que especifica si se van a omitir los espacios de nombres duplicados.A ReaderOptions object that specifies whether to omit duplicate namespaces.

Devoluciones

Objeto XmlReader.An XmlReader object.

Se aplica a