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

XmlReader

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, XmlReader mithilfe der CreateReader -Methode ein erstellt und XmlDocument mithilfe des Readers ein 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

Diese Methode wird normalerweise verwendet, wenn Sie eine andere Komponente mit einem bereitstellen müssen XmlReader .You typically use this method when you have to supply another component with an XmlReader. Sie können z. b. ein XmlReader aus einer LINQ to XML Struktur erstellen und dann diesen Reader an übergeben Load .For example, you can create an XmlReader from a LINQ to XML tree, and then pass that reader to Load.

Leser werden von allen von zurückgegebenen Lesern Create normalisiert.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, der XmlReader von zurückgegeben CreateReader wird, 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 XML behält keine Informationen darüber bei, ob Attribute Standard Attribute sind.LINQ to XML 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 SYSTEM Pseudo Attribute und XDocumentType sind über die-Methode nicht verfügbar XmlReader.MoveToAttribute .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 das-Attribut oder das-Attribut abrufen müssen PUBLIC SYSTEM , 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 aus NotSupportedException .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 nicht angezeigt XmlDeclaration .While reading, you will not encounter a node of type XmlDeclaration.

Gilt für:

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
Public Function CreateReader (readerOptions As ReaderOptions) As 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

XmlReader

Ein XmlReader-Objekt.An XmlReader object.

Gilt für: