的XmlWriter无效冒号

问题描述:

我使用的XmlWriter使用有效的XML文件作为我的模板建立一些XML。在该文件中,我有这行:<ds:Signature>的XmlWriter无效冒号

所以,我在C#这样做: writer.WriteStartElement("ds:Signature");

但它给我的无效字符0x3A,这是一个冒号的一个错误。有没有一种方法可以让我使用XmlWriter构建这一行xml?

在你的榜样,“DS”是指XML命名空间,并在正确的XML你不能没有它声明使用它,无论是在节点或其祖先之一,早在文件中。

XmlWriter知道命名空间,迫使你创建正确的XML。它会在您使用它们时记住名称空间。

这意味着,你可以做到以下几点:

using (var x = XmlWriter.Create("test.xml")) 
{ 
    x.WriteStartElement("ds", "ParentNode", "namespace"); 
    x.WriteStartElement("ds", "Signature", "namespace"); 
    x.WriteEndElement(); 
    x.WriteEndElement(); 
    x.Flush(); 
    x.Close(); 
} 

这将产生如下:

<?xml version="1.0" encoding="utf-8"?> 
<ds:ParentNode xmlns:ds="namespace"> 
    <ds:Signature /> 
</ds:ParentNode> 

这告诉别人读取“ParentNode”和“签名”中定义的XML名称空间“名称空间”,该名称空间由xmlns:ds="namespace"属性指定了前缀“ds”。

这是非常有用的,但是如果你想要的东西简单,只是想和你吐出的文字,我会说只是用一种StreamWriter

using (var s = new StreamWriter("test.xml")) 
{ 
    s.WriteLine("<ds:Signature>"); 
    s.Flush(); 
    s.Close(); 
} 
+0

谢谢你一个正确的答案,另外的StreamWriter建议。 –