XNode.CreateReader Metoda

Definicja

Tworzy XmlReader dla tego węzła.Creates an XmlReader for this node.

Przeciążenia

CreateReader()

Tworzy XmlReader dla tego węzła.Creates an XmlReader for this node.

CreateReader(ReaderOptions)

Tworzy XmlReader z opcjami określonymi przez readerOptions parametr.Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader()

Tworzy XmlReader dla tego węzła.Creates an XmlReader for this node.

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

Zwraca

XmlReader

XmlReader, Który może służyć do odczytu tego węzła i jego obiektów podrzędnych.An XmlReader that can be used to read this node and its descendants.

Przykłady

Poniższy przykład tworzy drzewo XML, tworzy przy XmlReader użyciu CreateReader metody i tworzy za pomocą XmlDocument czytnika.The following example creates an XML tree, creates an XmlReader by using the CreateReader method, and creates an XmlDocument by using the reader.

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:This example produces the following output:

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

Innym zastosowaniem tej metody jest przekształcenie XSLT.Another use for this method is to do an XSLT transformation. Można utworzyć drzewo XML, utworzyć obiekt XmlReader z drzewa XML, utworzyć nowy dokument i utworzyć XmlWriter , który będzie zapisywać w nowym dokumencie.You can create an XML tree, create an XmlReader from the XML tree, create a new document, and create an XmlWriter that will write into the new document. Następnie można wywołać transformację XSLT, przekazując XmlReader i XmlWriter do transformacji.Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. Po pomyślnym zakończeniu przekształcenia nowe drzewo XML zostanie wypełnione wynikami transformacji.After the transformation successfully completes, the new XML tree is populated with the results of the transform.

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:This example produces the following output:

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

Uwagi

Ta metoda jest używana zazwyczaj, gdy konieczne jest dostarczenie innego składnika za pomocą XmlReader .You typically use this method when you have to supply another component with an XmlReader. Na przykład można utworzyć obiekt XmlReader z LINQ do XMLLINQ to XML drzewa, a następnie przekazać go do programu Load .For example, you can create an XmlReader from a LINQ do XMLLINQ to XML tree, and then pass that reader to Load.

Wszystkie czytelnicy zwracani przez Create są normalizowanie czytelników.All of the readers returned by Create are normalizing readers. Zawsze wykonują normalizowanie podziału wierszy i pełną normalizację atrybutów.They always perform line break normalization and full normalization of attributes. W przeciwieństwie do XmlReader zwracanego przez CreateReader nie jest to normalizing czytnika.In contrast, the XmlReader returned by CreateReader is not a normalizing reader. Nie powoduje przekształcenia jakichkolwiek białych znaków.It does not transform any white space. Zwraca również atrybuty w kolejności, w jakiej zostały dodane, a nie w kolejności nazw atrybutów.It also returns attributes in the order that they were added, not in attribute name order.

LINQ do XMLLINQ to XML nie zachowuje informacji o tym, czy atrybuty są atrybutami domyślnymi.does not keep information about whether attributes are default attributes. IsDefault zawsze zwraca wartość false, niezależnie od tego, czy atrybut został wypełniony z wartością domyślną, czy nie.IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

PUBLICAtrybuty i SYSTEM XDocumentType nie są dostępne za pomocą XmlReader.MoveToAttribute metody.The PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. Są one dostępne tylko za pomocą XmlReader.GetAttribute metody, która przyjmuje kwalifikowaną nazwę atrybutu jako parametr.They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. Jeśli musisz pobrać PUBLIC SYSTEM atrybuty lub, należy użyć XmlReader.GetAttribute metody.If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

Dane base64 i BinHex nie są obsługiwane.Base64 and BinHex data are not supported. Jeśli spróbujesz pobrać te typy danych (na przykład przez wywołanie ReadElementContentAsBase64 ), czytelnik zgłosi NotSupportedException .If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

Dla tej xml deklaracji nie jest przydzielone czytnik.The xml declaration is not surfaced by the reader. Podczas odczytywania nie będzie można napotkać węzła typu XmlDeclaration .While reading, you will not encounter a node of type XmlDeclaration.

Zobacz też

Dotyczy

CreateReader(ReaderOptions)

Tworzy XmlReader z opcjami określonymi przez readerOptions parametr.Creates an XmlReader with the options specified by the 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

Parametry

readerOptions
ReaderOptions

ReaderOptionsObiekt, który określa, czy należy pominąć zduplikowane przestrzenie nazw.A ReaderOptions object that specifies whether to omit duplicate namespaces.

Zwraca

XmlReader

Obiekt XmlReader.An XmlReader object.

Dotyczy