Udostępnij za pośrednictwem


XNode.CreateReader Metoda

Definicja

Tworzy element XmlReader dla tego węzła.

Przeciążenia

CreateReader()

Tworzy element XmlReader dla tego węzła.

CreateReader(ReaderOptions)

Tworzy obiekt XmlReader z opcjami określonymi readerOptions przez parametr .

CreateReader()

Tworzy element XmlReader dla tego węzła.

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

Zwraca

XmlReader

Element XmlReader , który może służyć do odczytywania tego węzła i jego elementów podrzędnych.

Przykłady

Poniższy przykład tworzy drzewo XML, tworzy XmlReader obiekt przy użyciu CreateReader metody i tworzy obiekt XmlDocument przy użyciu czytnika.

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)  

Ten przykład generuje następujące wyniki:

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

Innym zastosowaniem tej metody jest wykonanie przekształcenia XSLT. Możesz utworzyć drzewo XML, utworzyć element XmlReader na podstawie drzewa XML, utworzyć nowy dokument i utworzyć obiekt XmlWriter , który zapisze w nowym dokumencie. Następnie można wywołać przekształcenie XSLT, przekazując XmlReader elementy i XmlWriter do przekształcenia. Po pomyślnym zakończeniu transformacji nowe drzewo XML zostanie wypełnione wynikami przekształcenia.

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)  

Ten przykład generuje następujące wyniki:

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

Uwagi

Ta metoda jest zwykle używana, gdy trzeba podać inny składnik za pomocą elementu XmlReader. Możesz na przykład utworzyć obiekt XmlReader na podstawie drzewa LINQ to XML, a następnie przekazać go do elementu Load.

Wszyscy czytelnicy zwracani przez Create program normalizują czytelników. Zawsze wykonują normalizację podziału wiersza i pełną normalizację atrybutów. Z kolei XmlReader zwracany przez CreateReader element nie jest czytnikiem normalizacji. Nie przekształca żadnych białych znaków. Zwraca również atrybuty w kolejności, w której zostały dodane, a nie w kolejności nazw atrybutów.

LINQ to XML nie przechowuje informacji o tym, czy atrybuty są atrybutami domyślnymi. IsDefault funkcja zawsze zwraca wartość false niezależnie od tego, czy atrybut został wypełniony z wartości domyślnej, czy nie.

Atrybuty PUBLIC i pseudo nie XDocumentType są dostępne za pośrednictwem XmlReader.MoveToAttribute SYSTEM metody . Są one dostępne tylko za pośrednictwem XmlReader.GetAttribute metody, która przyjmuje kwalifikowaną nazwę atrybutu jako parametr. Jeśli musisz pobrać PUBLIC atrybuty lub SYSTEM , należy użyć XmlReader.GetAttribute metody .

Dane Base64 i BinHex nie są obsługiwane. Jeśli spróbujesz pobrać te typy danych (na przykład przez wywołanie metody ReadElementContentAsBase64), czytelnik zgłosi błąd NotSupportedException.

Deklaracja xml nie jest uwidośnięta przez czytelnika. Podczas odczytu nie wystąpi węzeł typu XmlDeclaration.

Zobacz też

Dotyczy

CreateReader(ReaderOptions)

Tworzy obiekt XmlReader z opcjami określonymi readerOptions przez parametr .

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

ReaderOptions Obiekt, który określa, czy pominąć zduplikowane przestrzenie nazw.

Zwraca

XmlReader

Obiekt XmlReader.

Dotyczy