Другой вариант - использовать linq-to-xml для выполнения тяжелой работы, чтобы убедиться, что все анализируется правильно.
Начиная с:
var dict = new Dictionary<string, string>()
{
{ "A", "a" },
{ "B", "b" },
{ "C", "c" },
};
Вы можете превратить это в xml с помощью:
var xe = new XElement("d",
from kvp in dict
select new XElement("p",
new XAttribute("k", kvp.Key),
new XAttribute("v", kvp.Value))).ToString();
Что становится:
<d>
<p k="A" v="a" />
<p k="B" v="b" />
<p k="C" v="c" />
</d>
Чтобы превратить это в словарь, используйте это:
var dict2 = XDocument
.Parse(xml)
.Root
.Elements("p")
.ToDictionary(
x => x.Attribute("k").Value,
x => x.Attribute("v").Value);
Легко, да?
Этот метод избавит от необходимости специально экранировать специальные символы, такие как «|»или ";".