XNode.CreateReader Метод

Определение

Создает объект XmlReader для данного узла.

Перегрузки

CreateReader()

Создает объект XmlReader для данного узла.

CreateReader(ReaderOptions)

Создает объект XmlReader с характеристиками, заданными параметром readerOptions.

CreateReader()

Создает объект XmlReader для данного узла.

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

Возвращаемое значение

XmlReader

Объект XmlReader, который может использоваться для считывания данного узла и его потомков.

Примеры

В следующем примере создается XML-дерево, создается XmlReader с помощью CreateReader метода и создается XmlDocument модуль чтения.

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)  

В этом примере выводятся следующие данные:

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

Другим способом является преобразование XSLT. Можно создавать XML-дерево, XmlReader из XML-дерева, новый документ и XmlWriter, который будет заносить информацию в новый документ. После этого можно вызвать преобразование XSLT, передавая XmlReader и XmlWriter этой трансформации. После успешного завершения преобразования новое XML-дерево заполняется ее результатами.

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)  

В этом примере выводятся следующие данные:

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

Комментарии

Обычно этот метод используется, если необходимо предоставить другой компонент с помощью XmlReader. Например, можно создать из XmlReader дерева LINQ to XML, а затем передать это средство чтенияLoad.

Все читатели, возвращенные Create нормализацией читателей. Они всегда выполняют нормализацию разрывов строк и полную нормализацию атрибутов. В отличие от этого, XmlReader возвращаемый CreateReader не является нормализованным средством чтения. Он не преобразует пробелы. Он также возвращает атрибуты в порядке их добавления, а не в порядке имени атрибута.

LINQ to XML не сохраняет сведения о том, являются ли атрибуты атрибутами по умолчанию. IsDefault всегда возвращает значение false независимо от того, был ли атрибут заполнен из значения по умолчанию.

Атрибуты PUBLIC и SYSTEM псевдо атрибуты XDocumentType недоступны с помощью XmlReader.MoveToAttribute метода. Они доступны только с помощью XmlReader.GetAttribute метода, который принимает полное имя атрибута в качестве параметра. Если требуется получить PUBLIC атрибуты или SYSTEM атрибуты, следует использовать XmlReader.GetAttribute метод.

Данные Base64 и BinHex не поддерживаются. При попытке получить эти типы данных (например, путем вызова ReadElementContentAsBase64), средство чтения вызовет исключение NotSupportedException.

Объявление xml не отображается средством чтения. При чтении узел типа XmlDeclarationне встречается.

См. также раздел

Применяется к

CreateReader(ReaderOptions)

Создает объект XmlReader с характеристиками, заданными параметром 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

Параметры

readerOptions
ReaderOptions

Объект ReaderOptions, определяющий, нужно ли пропускать дубликаты пространств имен.

Возвращаемое значение

XmlReader

Объект XmlReader.

Применяется к