C# 用 XmlWriter 写入 "d3p1:string" 元素

C# With XmlWriter write "d3p1:string" element

<Messages xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:string>sample string 1</d3p1:string>
      <d3p1:string>sample string 2</d3p1:string>
    </Messages>

有了XmlWriter我不想写这个XML

代码:

writer.WriteStartElement("Messages");
writer.WriteAttributeString("xmlns", "d3p1", null, "http://schemas.microsoft.com/2003/10/Serialization/Arrays");

writer.WriteElementString("d3p1:string", "my message");

writer.WriteEndElement();

问题在于

  writer.WriteElementString("d3p1:string", "my message");

无效。

The ':' character, hexadecimal value 0x3A, cannot be included in a name.

如何写d3p1:stringxml标签?

同时使用 WriteElementString 的命名空间和前缀:

const string ns = "http://schemas.microsoft.com/2003/10/Serialization/Arrays";
const string prefix = "d3p1";
using(var writer = XmlWriter.Create("file.xml"))
{
    writer.WriteStartElement("Messages");
    writer.WriteAttributeString("xmlns", prefix, null, ns);
    writer.WriteElementString(prefix, "string", ns, "my message");
    writer.WriteEndElement();
}

我遇到了类似的问题。我需要写:

<t xml:space="preserve">

执行此操作的代码是:

writer.WriteAttributeString("xml", "space", "http://www.w3.org/XML/1998/namespace", "preserve")