XNode.CreateReader Methode

Definitie

Hiermee maakt u een XmlReader voor dit knooppunt.

Overloads

Name Description
CreateReader()

Hiermee maakt u een XmlReader voor dit knooppunt.

CreateReader(ReaderOptions)

Hiermee maakt u een XmlReader met de opties die zijn opgegeven door de readerOptions parameter.

CreateReader()

Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs

Hiermee maakt u een XmlReader voor dit knooppunt.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader

Retouren

Een XmlReader die kan worden gebruikt om dit knooppunt en de bijbehorende afstammelingen te lezen.

Voorbeelden

In het volgende voorbeeld wordt een XML-structuur gemaakt, een XmlReader xml-structuur gemaakt met behulp van de CreateReader methode en een XmlDocument structuur gemaakt met behulp van de lezer.

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)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>

Een ander gebruik voor deze methode is om een XSLT-transformatie uit te voeren. U kunt een XML-structuur maken, een XmlReader xml-structuur maken op basis van de XML-structuur, een nieuw document maken en een XmlWriter document maken dat naar het nieuwe document schrijft. Vervolgens kunt u de XSLT-transformatie aanroepen, waarbij de XmlReader en XmlWriter de transformatie worden doorgegeven. Nadat de transformatie is voltooid, wordt de nieuwe XML-structuur gevuld met de resultaten van de transformatie.

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)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root>
  <C1>Child1 data</C1>
  <C2>Child2 data</C2>
</Root>

Opmerkingen

Normaal gesproken gebruikt u deze methode wanneer u een ander onderdeel moet leveren met een XmlReader. U kunt bijvoorbeeld een XmlReader van een LINQ-naar-XML-structuur maken en die lezer vervolgens doorgeven aan Load.

Alle lezers die worden geretourneerd, Create normaliseren lezers. Ze voeren altijd regeleindenormalisatie en volledige normalisatie van kenmerken uit. De geretourneerde XmlReader waarde is daarentegen CreateReader geen normaliserende lezer. Er wordt geen witruimte getransformeerd. Het retourneert ook kenmerken in de volgorde waarin ze zijn toegevoegd, niet in de volgorde van de kenmerknaam.

LINQ naar XML bewaart geen informatie over of kenmerken standaardkenmerken zijn. IsDefault retourneert altijd onwaar, ongeacht of het kenmerk is ingevuld vanuit een standaardwaarde of niet.

De PUBLIC en SYSTEM pseudokenmerken XDocumentType zijn niet beschikbaar via de XmlReader.MoveToAttribute methode. Ze zijn alleen beschikbaar via de XmlReader.GetAttribute methode die de gekwalificeerde naam van het kenmerk als parameter gebruikt. Als u de PUBLIC of SYSTEM kenmerken moet ophalen, moet u de XmlReader.GetAttribute methode gebruiken.

Base64- en BinHex-gegevens worden niet ondersteund. Als u probeert deze typen gegevens op te halen (bijvoorbeeld door aan te roepen ReadElementContentAsBase64), genereert NotSupportedExceptionde lezer .

De xml declaratie wordt niet door de lezer aan het oppervlak geroepen. Tijdens het lezen ziet u geen knooppunt van het type XmlDeclaration.

Zie ook

Van toepassing op

CreateReader(ReaderOptions)

Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs
Bron:
XNode.cs

Hiermee maakt u een XmlReader met de opties die zijn opgegeven door de readerOptions parameter.

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

Parameters

readerOptions
ReaderOptions

Een ReaderOptions object dat aangeeft of dubbele naamruimten moeten worden weggelaten.

Retouren

Een XmlReader object.

Van toepassing op