Why not use the DataContractSerializer instead?
Dictionary<string, string> dict = new Dictionary<string,string>();
dict.Add("myKey", "myValue");
MemoryStream memoryStream = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(dict.GetType());
serializer.WriteObject(memoryStream, dict);
memoryStream.Position = 0;
StreamReader reader = new StreamReader(memoryStream);
string str = reader.ReadToEnd();
str will look like
<ArrayOfKeyValueOfstringstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<KeyValueOfstringstring>
<Key>myKey</Key>
<Value>myValue</Value>
</KeyValueOfstringstring>
</ArrayOfKeyValueOfstringstring>