Поделиться через


XNode.CreateReader Метод

Определение

XmlReader Создает для этого узла.

Перегрузки

Имя Описание
CreateReader()

XmlReader Создает для этого узла.

CreateReader(ReaderOptions)

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

CreateReader()

Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs

XmlReader Создает для этого узла.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As 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)

Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs
Исходный код:
XNode.cs

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.

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