Search code examples
c#xmlxmlwriter

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>

With XmlWriter I woul dlike to write this XML

Code:

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

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

writer.WriteEndElement();

Problem is that

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

is not valid.

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

How to write d3p1:string xml tag?


Solution

  • Also use the namespace and prefix at 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();
    }