XNode.CreateReader Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria um XmlReader para este nó.
Sobrecargas
| Name | Description |
|---|---|
| CreateReader() |
Cria um XmlReader para este nó. |
| CreateReader(ReaderOptions) |
Cria um XmlReader com as opções especificadas pelo |
CreateReader()
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
Devoluções
Um XmlReader que pode ser usado para ler este nó e os seus descendentes.
Exemplos
O exemplo seguinte cria uma árvore XML, cria um XmlReader usando o CreateReader método, e cria um 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>
Outra utilização deste método é fazer uma transformação XSLT. Podes criar uma árvore XML, criar um XmlReader a partir da árvore XML, criar um novo documento e criar um XmlWriter que escreva no novo documento. Depois, podes invocar a transformação XSLT, passando o XmlReader e XmlWriter para a transformação. Após a conclusão bem-sucedida da transformação, a nova árvore XML é 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>
Observações
Normalmente utiliza-se este método quando tem de fornecer outro componente com um XmlReader. Por exemplo, pode criar uma XmlReader árvore de LINQ para XML, e depois passar esse leitor para Load.
Todos os leitores que regressam Create são leitores de normalização. Eles realizam sempre a normalização de quebra de linha e a normalização total dos atributos. Em contraste, o XmlReader retornado por CreateReader não é um leitor normalizador. Não transforma nenhum espaço em branco. Também devolve os atributos pela ordem em que foram adicionados, não pela ordem dos nomes dos atributos.
O LINQ para XML não mantém informação sobre se os atributos são atributos predefinidos. IsDefault irá sempre devolver falso, independentemente de o atributo ter sido preenchido a partir de um valor padrão ou não.
Os PUBLIC atributos e SYSTEM pseudo em XDocumentType não estão disponíveis através do XmlReader.MoveToAttribute método. Só estão disponíveis através do XmlReader.GetAttribute método que utiliza o nome qualificado do atributo como parâmetro. Se tiveres de recuperar os PUBLIC atributos ou, SYSTEM deves usar o XmlReader.GetAttribute método.
Os dados Base64 e BinHex não são suportados. Se tentar recuperar este tipo de dados (por exemplo, chamando ReadElementContentAsBase64), o leitor lançará NotSupportedException.
A xml declaração não é apresentada pelo leitor. Ao ler, não encontrará um nó do tipo XmlDeclaration.
Ver também
Aplica-se a
CreateReader(ReaderOptions)
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 deve omitir espaços de nomes duplicados.
Devoluções
Um XmlReader objeto.