Sdílet prostřednictvím


XNode.CreateReader Metoda

Definice

Vytvoří pro tento uzel.XmlReader

Přetížení

Name Description
CreateReader()

Vytvoří pro tento uzel.XmlReader

CreateReader(ReaderOptions)

Vytvoří s XmlReader možnostmi zadanými parametrem readerOptions .

CreateReader()

Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs

Vytvoří pro tento uzel.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

Ten XmlReader lze 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ří pomocí XmlDocument čtenáře.

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ší možností použití této metody je provést transformaci XSLT. Můžete vytvořit strom XML, vytvořit ze XmlReader stromu XML, vytvořit nový dokument a vytvořit XmlWriter dokument, který se zapíše do nového dokumentu. Potom 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, pokud potřebujete zadat jinou komponentu s příponou XmlReader. Můžete například vytvořit XmlReader ze stromu LINQ to XML a pak 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 XmlReader vrácené uživatelem CreateReader není normalizace čtečky. Nemění žádné prázdné znaky. Vrátí také atributy v pořadí, v jakém byly přidány, ne v pořadí názvů atributů.

LINQ to XML neuchová informace o tom, jestli jsou atributy výchozími atributy. IsDefault vrátí hodnotu false bez ohledu na to, jestli byl atribut naplněn z výchozí hodnoty, nebo ne.

Prostřednictvím PUBLIC metody nejsou k dispozici XmlReader.MoveToAttribute pseudo atributyXDocumentType.SYSTEM 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 se neschová čtenářem. Při čtení narazíte na uzel typu XmlDeclaration.

Viz také

Platí pro

CreateReader(ReaderOptions)

Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs
Zdroj:
XNode.cs

Vytvoří s XmlReader možnostmi zadanými parametrem 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

Parametry

readerOptions
ReaderOptions

Objekt ReaderOptions , který určuje, zda se mají vynechat duplicitní obory názvů.

Návraty

Objekt XmlReader.

Platí pro