XNode.CreateReader メソッド

定義

このノードの XmlReader を作成します。Creates an XmlReader for this node.

オーバーロード

CreateReader()

このノードの XmlReader を作成します。Creates an XmlReader for this node.

CreateReader(ReaderOptions)

readerOptions パラメーターでオプションを指定して、XmlReader を作成します。Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader()

このノードの XmlReader を作成します。Creates an XmlReader for this node.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader ();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader

戻り値

このノードとその子孫の読み取りに使用される XmlReaderAn XmlReader that can be used to read this node and its descendants.

次の例では、XML ツリーを作成XmlReaderし、 CreateReader XmlDocumentメソッドを使用してを作成し、リーダーを使用してを作成します。The following example creates an XML tree, creates an XmlReader by using the CreateReader method, and creates an XmlDocument by using the reader.

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)  

この例を実行すると、次の出力が生成されます。This example produces the following output:

<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>  

このメソッドのもう1つの用途は、XSLT 変換を実行することです。Another use for this method is to do an XSLT transformation. この例では、XML ツリーを作成し、この XML ツリーから XmlReader を作成して、新しいドキュメントを作成します。次に、この新しいドキュメントに書き込むために XmlWriter を作成します。You can create an XML tree, create an XmlReader from the XML tree, create a new document, and create an XmlWriter that will write into the new document. 次に、XSLT 変換を呼び出し、変換処理に XmlReader および XmlWriter を渡すことができます。Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transformation. 変換が正常に完了すると、新しい XML ツリーに変換結果が挿入されます。After the transformation successfully completes, the new XML tree is populated with the results of the transform.

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)  

この例を実行すると、次の出力が生成されます。This example produces the following output:

<Root>  
  <C1>Child1 data</C1>  
  <C2>Child2 data</C2>  
</Root>  

注釈

このメソッドは、通常、を使用してXmlReader別のコンポーネントを指定する必要がある場合に使用します。You typically use this method when you have to supply another component with an XmlReader. たとえば、 XmlReader LINQ to XMLLINQ to XMLツリーからを作成し、そのリーダーをにLoad渡すことができます。For example, you can create an XmlReader from a LINQ to XMLLINQ to XML tree, and then pass that reader to Load.

によって返されるすべてCreateのリーダーは、リーダーを標準化しています。All of the readers returned by Create are normalizing readers. これらは常に、改行の正規化と属性の完全な正規化を実行します。They always perform line break normalization and full normalization of attributes. 一方、によっXmlReaderCreateReader返されるは、正規化されたリーダーではありません。In contrast, the XmlReader returned by CreateReader is not a normalizing reader. 空白文字は変換されません。It does not transform any white space. また、属性名の順序ではなく、追加された順序で属性が返されます。It also returns attributes in the order that they were added, not in attribute name order.

LINQ to XMLLINQ to XMLでは、属性が既定の属性であるかどうかに関する情報は保持されません。does not keep information about whether attributes are default attributes. IsDefaultは、属性が既定値から設定されたかどうかに関係なく、常に false を返します。IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

との疑似属性XDocumentTypeは、 XmlReader.MoveToAttributeメソッドでは使用できません。 SYSTEM PUBLICThe PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. 属性の修飾名をパラメーター XmlReader.GetAttributeとして受け取るメソッドを通じてのみ使用できます。They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. 属性PUBLICまたはSYSTEM属性を取得する必要がある場合は、 XmlReader.GetAttributeメソッドを使用する必要があります。If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

Base64 および BinHex データはサポートされていません。Base64 and BinHex data are not supported. このような種類のデータを取得しようとすると (たとえばReadElementContentAsBase64、を呼び出すことにNotSupportedExceptionよって)、リーダーはをスローします。If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

xml宣言はリーダーによって表示されません。The xml declaration is not surfaced by the reader. 読み取り中は、型XmlDeclarationのノードは検出されません。While reading, you will not encounter a node of type XmlDeclaration.

こちらもご覧ください

CreateReader(ReaderOptions)

readerOptions パラメーターでオプションを指定して、XmlReader を作成します。Creates an XmlReader with the options specified by the readerOptions parameter.

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

パラメーター

readerOptions
ReaderOptions

重複する名前空間を省略するかどうかを指定する ReaderOptions オブジェクト。A ReaderOptions object that specifies whether to omit duplicate namespaces.

戻り値

XmlReader オブジェクト。An XmlReader object.

適用対象