Partager via


XNode.CreateReader Méthode

Définition

Crée un XmlReader nœud pour ce nœud.

Surcharges

Nom Description
CreateReader()

Crée un XmlReader nœud pour ce nœud.

CreateReader(ReaderOptions)

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

CreateReader()

Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs

Crée un XmlReader nœud 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

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

Exemples

L’exemple suivant crée une arborescence XML, crée une XmlReader à l’aide de la CreateReader méthode et 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 une XmlReader arborescence XML à partir de l’arborescence XML, créer un document et créer un XmlWriter document qui écrit dans le nouveau document. Ensuite, vous pouvez appeler la transformation XSLT, passer la XmlReader transformation et XmlWriter la transformer. Une fois la transformation terminée, 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 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 pas d’espace blanc. Elle retourne également des 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 la question de savoir si les attributs sont des attributs par défaut. IsDefault retourne toujours false, que l’attribut ait été rempli à partir d’une valeur par défaut ou non.

SYSTEM Les PUBLIC pseudo-attributs activés XDocumentType ne sont pas disponibles par le biais de la XmlReader.MoveToAttribute méthode. Elles 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)

Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs
Source:
XNode.cs

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

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

Objet XmlReader.

S’applique à