XNode.CreateReader Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria um XmlReader para este nó.
Sobrecargas
| Nome | Description |
|---|---|
| CreateReader() |
Cria um XmlReader para este nó. |
| CreateReader(ReaderOptions) |
Cria um XmlReader com as opções especificadas pelo |
CreateReader()
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
Cria um XmlReader para este nó.
public:
System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader
Retornos
Um XmlReader que pode ser usado para ler este nó e seus descendentes.
Exemplos
O exemplo a seguir cria uma árvore XML, cria uma XmlReader usando o CreateReader método e cria uma XmlDocument usando o leitor.
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)
Este exemplo produz a seguinte saída:
<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>
Outro uso para esse método é fazer uma transformação XSLT. Você pode criar uma árvore XML, criar uma XmlReader árvore XML, criar um novo documento e criar um XmlWriter que será gravado no novo documento. Em seguida, você pode invocar a transformação XSLT, passando o XmlReader e XmlWriter para a transformação. Depois que a transformação for concluída com êxito, a nova árvore XML será preenchida com os resultados da transformação.
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)
Este exemplo produz a seguinte saída:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Comentários
Normalmente, você usa esse método quando precisa fornecer outro componente com um XmlReader. Por exemplo, você pode criar de uma XmlReader árvore LINQ para XML e, em seguida, passar esse leitor para Load.
Todos os leitores retornados Create estão normalizando os leitores. Eles sempre executam a normalização de quebra de linha e a normalização completa dos atributos. Por outro lado, o XmlReader retornado por CreateReader não é um leitor normalizador. Ele não transforma nenhum espaço em branco. Ele também retorna atributos na ordem em que foram adicionados, não na ordem do nome do atributo.
LINQ to XML não mantém informações sobre se os atributos são atributos padrão. IsDefault sempre retornará false, independentemente de o atributo ter sido preenchido de um valor padrão ou não.
Os PUBLIC atributos XDocumentType pseudo e SYSTEM não estão disponíveis por meio do XmlReader.MoveToAttribute método. Eles só estão disponíveis por meio do XmlReader.GetAttribute método que usa o nome qualificado do atributo como um parâmetro. Se você precisar recuperar os PUBLIC atributos ou SYSTEM os atributos, deverá usar o XmlReader.GetAttribute método.
Não há suporte para dados Base64 e BinHex. Se você tentar recuperar esses tipos de dados (por exemplo, chamando ReadElementContentAsBase64), o leitor gerará NotSupportedException.
A xml declaração não é exibida pelo leitor. Durante a leitura, você não encontrará um nó do tipo XmlDeclaration.
Confira também
Aplica-se a
CreateReader(ReaderOptions)
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
- Origem:
- XNode.cs
Cria um XmlReader com as opções especificadas pelo readerOptions parâmetro.
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
Parâmetros
- readerOptions
- ReaderOptions
Um ReaderOptions objeto que especifica se os namespaces duplicados devem ser omitdos.
Retornos
Um objeto XmlReader.