XNode.CreateReader Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy element XmlReader dla tego węzła.
Przeciążenia
CreateReader() |
Tworzy element XmlReader dla tego węzła. |
CreateReader(ReaderOptions) |
Tworzy obiekt XmlReader z opcjami określonymi |
CreateReader()
Tworzy element XmlReader dla tego węzła.
public:
System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader ();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader
Zwraca
Element XmlReader , który może służyć do odczytywania tego węzła i jego elementów podrzędnych.
Przykłady
Poniższy przykład tworzy drzewo XML, tworzy XmlReader obiekt przy użyciu CreateReader metody i tworzy obiekt XmlDocument przy użyciu czytnika.
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:
<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>
Innym zastosowaniem tej metody jest wykonanie przekształcenia XSLT. Możesz utworzyć drzewo XML, utworzyć element XmlReader na podstawie drzewa XML, utworzyć nowy dokument i utworzyć obiekt XmlWriter , który zapisze w nowym dokumencie. Następnie można wywołać przekształcenie XSLT, przekazując XmlReader elementy i XmlWriter do przekształcenia. Po pomyślnym zakończeniu transformacji nowe drzewo XML zostanie wypełnione wynikami przekształcenia.
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:
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Uwagi
Ta metoda jest zwykle używana, gdy trzeba podać inny składnik za pomocą elementu XmlReader. Możesz na przykład utworzyć obiekt XmlReader na podstawie drzewa LINQ to XML, a następnie przekazać go do elementu Load.
Wszyscy czytelnicy zwracani przez Create program normalizują czytelników. Zawsze wykonują normalizację podziału wiersza i pełną normalizację atrybutów. Z kolei XmlReader zwracany przez CreateReader element nie jest czytnikiem normalizacji. Nie przekształca żadnych białych znaków. Zwraca również atrybuty w kolejności, w której zostały dodane, a nie w kolejności nazw atrybutów.
LINQ to XML nie przechowuje informacji o tym, czy atrybuty są atrybutami domyślnymi. IsDefault funkcja zawsze zwraca wartość false niezależnie od tego, czy atrybut został wypełniony z wartości domyślnej, czy nie.
Atrybuty PUBLIC
i pseudo nie XDocumentType są dostępne za pośrednictwem XmlReader.MoveToAttribute SYSTEM
metody . Są one dostępne tylko za pośrednictwem XmlReader.GetAttribute metody, która przyjmuje kwalifikowaną nazwę atrybutu jako parametr. Jeśli musisz pobrać PUBLIC
atrybuty lub SYSTEM
, należy użyć XmlReader.GetAttribute metody .
Dane Base64 i BinHex nie są obsługiwane. Jeśli spróbujesz pobrać te typy danych (na przykład przez wywołanie metody ReadElementContentAsBase64), czytelnik zgłosi błąd NotSupportedException.
Deklaracja xml
nie jest uwidośnięta przez czytelnika. Podczas odczytu nie wystąpi węzeł typu XmlDeclaration.
Zobacz też
Dotyczy
CreateReader(ReaderOptions)
Tworzy obiekt XmlReader z opcjami określonymi readerOptions
przez parametr .
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
Parametry
- readerOptions
- ReaderOptions
ReaderOptions Obiekt, który określa, czy pominąć zduplikowane przestrzenie nazw.
Zwraca
Obiekt XmlReader.