XNode.CreateReader Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Skapar en XmlReader för den här noden.
Överlagringar
| Name | Description |
|---|---|
| CreateReader() |
Skapar en XmlReader för den här noden. |
| CreateReader(ReaderOptions) |
Skapar en XmlReader med de alternativ som anges av parametern |
CreateReader()
Skapar en XmlReader för den här noden.
public:
System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader
Returer
En XmlReader som kan användas för att läsa den här noden och dess underordnade.
Exempel
Följande exempel skapar ett XML-träd, skapar ett XmlReader med hjälp CreateReader av metoden och skapar ett XmlDocument med hjälp av läsaren.
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)
Det här exemplet genererar följande utdata:
<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>
En annan användning för den här metoden är att göra en XSLT-transformering. Du kan skapa ett XML-träd, skapa ett XmlReader från XML-trädet, skapa ett nytt dokument och skapa ett XmlWriter som ska skriva till det nya dokumentet. Sedan kan du anropa XSLT-omvandlingen och skicka XmlReader och XmlWriter till transformeringen. När omvandlingen har slutförts fylls det nya XML-trädet i med resultatet av transformeringen.
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)
Det här exemplet genererar följande utdata:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Kommentarer
Du använder vanligtvis den här metoden när du måste ange en annan komponent med en XmlReader. Du kan till exempel skapa en XmlReader från ett LINQ till XML-träd och sedan skicka läsaren till Load.
Alla läsare som returneras av Create normaliserar läsarna. De utför alltid normalisering av radbrytningar och fullständig normalisering av attribut. Det som returneras av CreateReader är däremot XmlReader inte en normaliserande läsare. Det omvandlar inte något tomt utrymme. Den returnerar även attribut i den ordning som de lades till, inte i attributnamnsordning.
LINQ till XML behåller inte information om huruvida attribut är standardattribut. IsDefault returnerar alltid false oavsett om attributet har fyllts i från ett standardvärde eller inte.
Pseudoattributen PUBLIC och SYSTEM på XDocumentType är inte tillgängliga via XmlReader.MoveToAttribute -metoden. De är endast tillgängliga via metoden XmlReader.GetAttribute som tar det kvalificerade namnet på attributet som en parameter. Om du måste hämta attributen PUBLIC eller SYSTEM bör du använda XmlReader.GetAttribute -metoden.
Base64- och BinHex-data stöds inte. Om du försöker hämta dessa typer av data (till exempel genom att anropa ReadElementContentAsBase64) genererar NotSupportedExceptionläsaren .
Deklarationen xml visas inte av läsaren. När du läser kommer du inte att stöta på en nod av typen XmlDeclaration.
Se även
Gäller för
CreateReader(ReaderOptions)
Skapar en XmlReader med de alternativ som anges av parametern 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
Parametrar
- readerOptions
- ReaderOptions
Ett ReaderOptions objekt som anger om du vill utelämna duplicerade namnområden.
Returer
Ett XmlReader objekt.