XNode.CreateReader Methode

Definition

Erstellt einen XmlReader für diesen Knoten.Creates an XmlReader for this node.

Überlädt

CreateReader()

Erstellt einen XmlReader für diesen Knoten.Creates an XmlReader for this node.

CreateReader(ReaderOptions)

Erstellt einen XmlReader mit den im readerOptions-Parameter angegebenen Optionen.Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader()

Erstellt einen XmlReader für diesen Knoten.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

Gibt zurück

Ein XmlReader, der zum Lesen dieses Knotens und seiner Nachfolgerelemente verwendet werden kann.An XmlReader that can be used to read this node and its descendants.

Beispiele

Im folgenden Beispiel wird eine XML-Struktur erstellt, eine XmlReader mithilfe der CreateReader-Methode erstellt und mithilfe des Readers eine XmlDocument erstellt.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)  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Eine weitere Verwendung für diese Methode besteht darin, eine XSLT-Transformation durchzuführen.Another use for this method is to do an XSLT transformation. Sie können eine XML-Struktur erstellen, einen XmlReader aus der XML-Struktur erstellen, ein neues Dokument erstellen und dann einen XmlWriter erstellen, der in das neue Dokument schreibt.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. Anschließend können Sie die XSLT-Transformation aufrufen und den XmlReader sowie den XmlWriter an die Transformation übergeben.Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.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)  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Hinweise

Normalerweise verwenden Sie diese Methode, wenn Sie eine andere Komponente mit einer XmlReaderbereitstellen müssen.You typically use this method when you have to supply another component with an XmlReader. Beispielsweise können Sie eine XmlReader aus einer LINQ to XMLLINQ to XML Struktur erstellen und diesen Reader dann an Loadübergeben.For example, you can create an XmlReader from a LINQ to XMLLINQ to XML tree, and then pass that reader to Load.

Alle von Create zurückgegebenen Reader werden Reader normalisieren.All of the readers returned by Create are normalizing readers. Sie führen immer eine Zeilenumbruch Normalisierung und eine vollständige Normalisierung von Attributen durch.They always perform line break normalization and full normalization of attributes. Im Gegensatz dazu ist der von CreateReader zurückgegebene XmlReader kein normalisierender Reader.In contrast, the XmlReader returned by CreateReader is not a normalizing reader. Leerzeichen werden nicht transformiert.It does not transform any white space. Außerdem gibt Sie Attribute in der Reihenfolge zurück, in der Sie hinzugefügt wurden, nicht in der Reihenfolge der AttributnamenIt also returns attributes in the order that they were added, not in attribute name order.

LINQ to XMLLINQ to XML behält keine Informationen darüber bei, ob Attribute Standard Attribute sind.does not keep information about whether attributes are default attributes. IsDefault gibt immer false zurück, unabhängig davon, ob das Attribut von einem Standardwert aufgefüllt wurde.IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

Die PUBLIC-und SYSTEM Pseudo Attribute auf XDocumentType sind über die XmlReader.MoveToAttribute-Methode nicht verfügbar.The PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. Sie sind nur über die XmlReader.GetAttribute-Methode verfügbar, die den qualifizierten Namen des Attributs als Parameter annimmt.They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. Wenn Sie die PUBLIC-oder SYSTEM Attribute abrufen müssen, sollten Sie die XmlReader.GetAttribute-Methode verwenden.If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

Base64-und BinHex-Daten werden nicht unterstützt.Base64 and BinHex data are not supported. Wenn Sie versuchen, diese Datentypen abzurufen (z. b. durch Aufrufen von ReadElementContentAsBase64), löst der Reader NotSupportedExceptionaus.If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

Die xml Deklaration wird vom Reader nicht angezeigt.The xml declaration is not surfaced by the reader. Beim Lesen wird ein Knoten vom Typ XmlDeclarationnicht angezeigt.While reading, you will not encounter a node of type XmlDeclaration.

Siehe auch

CreateReader(ReaderOptions)

Erstellt einen XmlReader mit den im readerOptions-Parameter angegebenen Optionen.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

Parameter

readerOptions
ReaderOptions

Ein ReaderOptions-Objekt, das angibt, ob doppelte Namespaces ausgelassen werden sollen.A ReaderOptions object that specifies whether to omit duplicate namespaces.

Gibt zurück

Ein XmlReader-Objekt.An XmlReader object.

Gilt für: