XContainer.CreateWriter 方法

定义

创建可用于将节点添加至 XmlWriterXContainerCreates an XmlWriter that can be used to add nodes to the XContainer.

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

返回

已准备好写入内容的 XmlWriterAn XmlWriter that is ready to have content written to it.

示例

可以使用此方法执行 XSLT 转换。You can use this method to perform an XSLT transformation. 您可以创建 XML 树,从 XML 树创建 XmlReader,创建新文档,然后创建要写入到新文档的 XmlWriterYou can create an XML tree, create an XmlReader from the XML tree, create a new document, and create a XmlWriter that will write into the new document. 然后,可以调用 XSLT 转换,并将 XmlReaderXmlWriter 传递到转换。Then, you can invoke the XSLT transformation, passing the XmlReader and XmlWriter to the transform. 在转换成功完成后,使用转换的结果,填充新的 XML 树。After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

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>  

注解

序列化时,将从 XML 树中的命名空间特性推断命名空间前缀。While serializing, namespace prefixes are inferred from the namespace attributes in the XML tree.

有关详细信息,请参阅使用XML 命名空间For more information, see Working with XML Namespaces.

适用于

另请参阅