XNode.CreateReader Méthode

Définition

Crée un XmlReader pour ce nœud.

Surcharges

CreateReader()

Crée un XmlReader pour ce nœud.

CreateReader(ReaderOptions)

Crée un XmlReader avec les options spécifiées par le paramètre readerOptions.

CreateReader()

Crée un XmlReader pour ce nœud.

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

Retours

XmlReader

XmlReader qui peut être utilisé pour lire ce nœud et ses descendants.

Exemples

L’exemple suivant crée une arborescence XML, en crée une XmlReader à l’aide de la CreateReader méthode et en crée un XmlDocument à l’aide du lecteur.

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)  

Cet exemple produit la sortie suivante :

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

Une autre utilisation de cette méthode consiste à effectuer une transformation XSLT. Vous pouvez créer une arborescence XML, créer un objet XmlReader à partir de l'arborescence XML, créer un nouveau document, puis créer un objet XmlWriter qui écrira dans le nouveau document. Ensuite, vous pouvez appeler la transformation XSLT, en passant le XmlReader et le XmlWriter à la transformation. Une fois la transformation terminée avec succès, la nouvelle arborescence XML est remplie avec les résultats de la transformation.

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)  

Cet exemple produit la sortie suivante :

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

Remarques

Vous utilisez généralement cette méthode lorsque vous devez fournir un autre composant avec un XmlReader. Par exemple, vous pouvez créer un élément à partir d’une XmlReader arborescence LINQ to XML, puis passer ce lecteur à Load.

Tous les lecteurs retournés par Create normalisent les lecteurs. Ils effectuent toujours la normalisation des sauts de ligne et la normalisation complète des attributs. En revanche, le XmlReader retour par CreateReader n’est pas un lecteur de normalisation. Il ne transforme aucun espace blanc. Il retourne également les attributs dans l’ordre dans lequel ils ont été ajoutés, et non dans l’ordre de nom de l’attribut.

LINQ to XML ne conserve pas d’informations sur le fait que les attributs sont des attributs par défaut. IsDefault retourne toujours false, que l’attribut ait été rempli ou non à partir d’une valeur par défaut.

SYSTEM Les PUBLIC pseudo-attributs activés XDocumentType ne sont pas disponibles par le biais de la XmlReader.MoveToAttribute méthode. Ils sont disponibles uniquement par le biais de la XmlReader.GetAttribute méthode qui prend le nom qualifié de l’attribut en tant que paramètre. Si vous devez récupérer les attributs ou SYSTEM les PUBLIC attributs, vous devez utiliser la XmlReader.GetAttribute méthode.

Les données Base64 et BinHex ne sont pas prises en charge. Si vous tentez de récupérer ces types de données (par exemple, en appelant ReadElementContentAsBase64), le lecteur lève NotSupportedException.

La xml déclaration n’est pas exposée par le lecteur. Lors de la lecture, vous ne rencontrerez pas de nœud de type XmlDeclaration.

Voir aussi

S’applique à

CreateReader(ReaderOptions)

Crée un XmlReader avec les options spécifiées par le paramètre readerOptions.

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

Paramètres

readerOptions
ReaderOptions

Objet ReaderOptions qui spécifie s'il faut omettre des espaces de noms en double.

Retours

XmlReader

Objet XmlReader.

S’applique à