XNode.CreateReader XNode.CreateReader XNode.CreateReader XNode.CreateReader Method

Definition

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

Überlädt

CreateReader() CreateReader() CreateReader() CreateReader()

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

CreateReader(ReaderOptions) CreateReader(ReaderOptions) CreateReader(ReaderOptions)

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

CreateReader() CreateReader() CreateReader() 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, XmlReader mithilfe der CreateReader -Methode ein erstellt und mithilfe XmlDocument 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 XmlReaderbereitstellen müssen.You typically use this method when you have to supply another component with an XmlReader. Sie können z. b. XmlReader aus einer LINQ to XMLLINQ to XML Struktur erstellen und diesen 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.

Leser werden von allen von Create zurückgegebenen Lesern 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 XmlReader der, CreateReader der von zurückgegeben 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 XMLLINQ to XMLbehält keine Informationen darüber bei, ob Attribute Standard Attribute sind.does not keep information about whether attributes are default attributes. IsDefaultgibt 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 Pseudo SYSTEM Attribute XmlReader.MoveToAttribute und sindüberdie-Methodenichtverfügbar.XDocumentTypeThe 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 PUBLIC SYSTEM das-Attribut abrufen müssen, sollten XmlReader.GetAttribute Sie die-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 ReadElementContentAsBase64 NotSupportedException. b. durch Aufrufen von), löst der Reader aus.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) CreateReader(ReaderOptions) 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 ReaderOptions 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

Gilt für: