XNode.CreateReader Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří pro tento uzel příkaz XmlReader .
Přetížení
CreateReader() |
Vytvoří pro tento uzel příkaz XmlReader . |
CreateReader(ReaderOptions) |
XmlReader Vytvoří s možnostmi určenými parametrem |
CreateReader()
Vytvoří pro tento uzel příkaz XmlReader .
public:
System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader ();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader
Návraty
Dá XmlReader se použít ke čtení tohoto uzlu a jeho potomků.
Příklady
Následující příklad vytvoří strom XML, vytvoří XmlReader pomocí CreateReader metody a vytvoří XmlDocument pomocí čtečky.
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)
Tento příklad vytvoří následující výstup:
<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>
Dalším použitím této metody je provést transformaci XSLT. Můžete vytvořit strom XML, vytvořit XmlReader ze stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Pak můžete vyvolat transformaci XSLT a předat XmlReader ji do XmlWriter transformace. Po úspěšném dokončení transformace se nový strom XML naplní výsledky transformace.
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)
Tento příklad vytvoří následující výstup:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Poznámky
Tuto metodu obvykle používáte, když potřebujete zadat jinou komponentu s příponou XmlReader. Můžete například vytvořit XmlReader ze stromu LINQ to XML a předat tuto čtečku .Load
Všichni čtenáři vrácení Create normalizací čtenářů. Vždy provádějí normalizaci zalomení řádků a úplnou normalizaci atributů. Naproti tomu vrácený XmlReader CreateReader uživatelem není normalizační čtečka. Nemění žádné prázdné znaky. Vrátí také atributy v pořadí, v jakém byly přidány, nikoli v pořadí názvů atributů.
LINQ to XML neuchová informace o tom, jestli jsou atributy výchozími atributy. IsDefault vždy vrátí hodnotu false bez ohledu na to, jestli byl atribut naplněn z výchozí hodnoty nebo ne.
Atributy PUBLIC
a SYSTEM
pseudo atributy XDocumentType nejsou dostupné prostřednictvím XmlReader.MoveToAttribute metody. Jsou k dispozici pouze prostřednictvím XmlReader.GetAttribute metody, která přebírá kvalifikovaný název atributu jako parametr. Pokud potřebujete načíst PUBLIC
atributy nebo SYSTEM
atributy, měli byste použít metodu XmlReader.GetAttribute .
Data Base64 a BinHex nejsou podporována. Pokud se pokusíte načíst tyto typy dat (například voláním ReadElementContentAsBase64), čtečka vyvolá NotSupportedException.
Deklarace xml
není prodchována čtenářem. Při čtení narazíte na uzel typu XmlDeclaration.
Viz také
Platí pro
CreateReader(ReaderOptions)
XmlReader Vytvoří s možnostmi určenými parametremreaderOptions
.
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
Parametry
- readerOptions
- ReaderOptions
Objekt ReaderOptions , který určuje, jestli se mají vynechat duplicitní obory názvů.
Návraty
Objekt XmlReader.