XNode.CreateReader 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立這個節點的 XmlReader。
多載
CreateReader() |
建立這個節點的 XmlReader。 |
CreateReader(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,可用於讀取這個節點及其子代 (Descendant)。
範例
下列範例會建立 XML 樹狀結構、使用 CreateReader 方法建立 XmlReader ,並使用讀取器建立 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 樹狀結構、從 XML 樹狀結構建立 XmlReader、建立新文件,然後建立將寫入新文件中的 XmlWriter。 然後,您可以叫用 (Invoke) 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 元件時,通常會使用這個方法。 例如,您可以從LINQ to XML樹狀結構建立 XmlReader ,然後將該讀取器傳遞至 Load 。
傳 Create 回的所有讀取器都會正規化讀取器。 它們一律會執行分行符號正規化和屬性的完整正規化。 相反地, XmlReader 傳回的 CreateReader 不是正規化讀取器。 它不會轉換任何空白字元。 它也會依新增的順序傳回屬性,而不是以屬性名稱順序傳回屬性。
LINQ to XML不會保留屬性是否為預設屬性的相關資訊。 IsDefault 不論屬性是否從預設值填入,都會傳回 false。
上的 PUBLIC
XDocumentType 和 SYSTEM
虛擬屬性無法透過 XmlReader.MoveToAttribute 方法取得。 它們只能透過 XmlReader.GetAttribute 接受屬性限定名稱做為參數的方法使用。 如果您必須擷取 PUBLIC
或 SYSTEM
屬性,您應該使用 XmlReader.GetAttribute 方法。
不支援 Base64 和 BinHex 資料。 例如,如果您嘗試擷取這些類型的資料 (,例如呼叫 ReadElementContentAsBase64) ,讀取器會擲回 NotSupportedException 。
讀取 xml
器不會顯示宣告。 讀取時,您不會遇到 類型 XmlDeclaration 為 的節點。
另請參閱
適用於
CreateReader(ReaderOptions)
使用 readerOptions
參數指定的選項建立 XmlReader。
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 物件。