How do I add a default namespace with no prefix using XMLSerializer

Posted by OldBob on Stack Overflow See other posts from Stack Overflow or by OldBob
Published on 2010-03-23T13:16:10Z Indexed on 2010/03/26 9:03 UTC
Read the original article Hit count: 372

Filed under:
|
|

Hi

Using C# and .Net 3.5; I am trying to generate an XML document that contains the default namespace without a prefix using XMLSerializer. eg.

<?xml version="1.0" encoding="utf-8" ?>
<MyRecord ID="9266" xmlns="http://www.website.com/MyRecord">
    <List>
        <SpecificItem>

using the following code

string xmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(ExportMyRecord));
XmlSerializerNamespaces xmlnsEmpty = new XmlSerializerNamespaces();
xmlnsEmpty.Add(string.Empty, string.Empty);
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, myRecord, xmlnsEmpty);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
xmlizedString = this.UTF8ByteArrayToString(memoryStream.ToArray());

and class structure

[Serializable]
[XmlRoot("MyRecord")]
public class ExportMyRecord
{

    [XmlAttribute("ID")]
    public int ID { get; set; }

Now, I've tried various options

XmlSerializer xs = new XmlSerializer(typeof(ExportMyRecord),"http://www.website.com/MyRecord");

or

[XmlRoot(Namespace = "http://www.website.com/MyRecord", ElementName="MyRecord")]

gives me

<?xml version="1.0" encoding="utf-8"?>
<q1:MylRecord ID="9266" xmlns:q1="http://www.website.com/MyRecord">
    <q1:List>
        <q1:SpecificItem>

I need the XML to have the namespace without the prefix as it's going to a third party provider and they reject all other alternatives. Any suggestions?

No responses so far. Has anyone experienced this or know how to solve it?

© Stack Overflow or respective owner

Related posts about c#

Related posts about xmlserializer