XNode.CreateReader Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 |
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 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
Objet XmlReader.