XNode.CreateReader Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt einen XmlReader für diesen Knoten.
Überlädt
CreateReader() |
Erstellt einen XmlReader für diesen Knoten. |
CreateReader(ReaderOptions) |
Erstellt einen XmlReader mit den im |
CreateReader()
Erstellt einen XmlReader für diesen Knoten.
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.
Beispiele
Im folgenden Beispiel wird eine XML-Struktur erstellt, eine XmlReader mithilfe der CreateReader Methode erstellt und mithilfe des Readers ein XmlDocument Objekt erstellt.
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:
<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>
Eine weitere Verwendung für diese Methode besteht darin, eine XSLT-Transformation zu erledigen. 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. Anschließend können Sie die XSLT-Transformation aufrufen und den XmlReader sowie den XmlWriter an die Transformation übergeben. Nach erfolgreichem Abschluss der Transformation wird die neue XML-Struktur mit den Ergebnissen der Transformation aufgefüllt.
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:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Hinweise
Sie verwenden diese Methode in der Regel, wenn Sie eine andere Komponente mit einer XmlReader. Sie können z. B. eine XmlReader LINQ to XML Struktur erstellen und dann diesen Leser an Loadübergeben.
Alle von ihnen zurückgegebenen Create Leser werden normalisiert. Sie führen immer die Linienumbruch normalisierung und vollständige Normalisierung von Attributen aus. Im Gegensatz dazu ist die XmlReader zurückgegebene Leseausgabe kein Normalisierungsleser CreateReader . Es transformiert keinen Leerraum. Es gibt auch Attribute in der Reihenfolge zurück, in der sie hinzugefügt wurden, nicht in der Attributnamenreihenfolge.
LINQ to XML enthält keine Informationen darüber, ob Attribute Standardattribute sind. IsDefault gibt immer false zurück, unabhängig davon, ob das Attribut aus einem Standardwert ausgefüllt wurde oder nicht.
SYSTEM
Die PUBLIC
und Pseudoattribute XDocumentType sind über die XmlReader.MoveToAttribute Methode nicht verfügbar. Sie sind nur über die XmlReader.GetAttribute Methode verfügbar, die den qualifizierten Namen des Attributs als Parameter verwendet. Wenn Sie die Attribute abrufen SYSTEM
müssen, sollten Sie die PUBLIC
XmlReader.GetAttribute Methode verwenden.
Base64- und BinHex-Daten werden nicht unterstützt. Wenn Sie versuchen, diese Datentypen abzurufen (z. B. durch Aufrufen ReadElementContentAsBase64), wird der Leser ausgelöst NotSupportedException.
Die xml
Deklaration wird nicht vom Leser angezeigt. Beim Lesen wird kein Knoten des Typs XmlDeclarationangezeigt.
Siehe auch
Gilt für
CreateReader(ReaderOptions)
Erstellt einen XmlReader mit den im readerOptions
-Parameter angegebenen Optionen.
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.
Gibt zurück
Ein XmlReader-Objekt.