XNode.CreateReader Metoda

Definicja

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

Przeciążenia

CreateReader()

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

CreateReader(ReaderOptions)

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

CreateReader()

XmlReader Tworzy 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 , 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 XmlReader przy CreateReader użyciu XmlDocument metody i tworzy za pomocą 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 XmlWriter utworzyć, 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 XmlReaderpomocą.You typically use this method when you have to supply another component with an XmlReader. Na przykład można utworzyć obiekt XmlReader LINQ do XMLLINQ to XML z drzewa, a następnie przekazać go do Loadprogramu.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 CreateReader przez 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 XMLnie zachowuje informacji o tym, czy atrybuty są atrybutami domyślnymi.does not keep information about whether attributes are default attributes. IsDefaultzawsze 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.

Atrybuty PUBLIC XmlReader.MoveToAttribute i nieSYSTEMsądostępne zapomocąmetody.XDocumentTypeThe 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 atrybuty lub SYSTEM XmlReader.GetAttribute , należy użyć 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 NotSupportedExceptionzgłosi.If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

Dla xml tej 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ż

CreateReader(ReaderOptions)

Tworzy z opcjami określonymi readerOptions przez parametr. XmlReaderCreates 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

Parametry

readerOptions
ReaderOptions

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

Zwraca

XmlReader Obiekt.An XmlReader object.

Dotyczy