XNode.CreateReader Metoda

Definice

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 parametremreaderOptions.

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

XmlReader

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

XmlReader

Objekt XmlReader.

Platí pro