Пожалуйста, никогда не манипулируйте XML через тип String. Это очень часто испортит вещи.
Ваши тестовые примеры не используют файл реальных данных, не так ли? Не забудьте проверить, что вы собираетесь использовать. Вы не представляете, как тесты отличаются от реальности. Вам нужно взять один из файлов, которые вы будете обрабатывать, и использовать XDocument.Load, чтобы прочитать его.
После этого посмотрите на значения атрибутов, символ за символом.
Я попробовал следующее, и это сработало:
using (var reader = XmlReader.Create(@"..\..\..\..\Swedish.xml"))
{
var sw = XDocument.Load(reader);
var element = sw.Element("elt");
if (element != null)
{
var attribute = element.Attribute("attrib");
if (attribute != null)
{
var v = attribute.Value;
for (var i=0; i<36; i++)
{
var c = v[i];
Console.WriteLine("v[{0}]={1} \t('{2}')", i,(int) c, c);
}
Console.WriteLine();
}
}
}
Вывод был:
v[0]=83 ('S')
v[1]=119 ('w')
v[2]=101 ('e')
v[3]=100 ('d')
v[4]=105 ('i')
v[5]=115 ('s')
v[6]=104 ('h')
v[7]=58 (':')
v[8]=32 (' ')
v[9]=228 ('ä')
v[10]=32 (' ')
v[11]=246 ('ö')
v[12]=32 (' ')
v[13]=69 ('E')
v[14]=117 ('u')
v[15]=114 ('r')
v[16]=111 ('o')
v[17]=58 (':')
v[18]=32 (' ')
v[19]=128 ('?')
v[20]=32 (' ')
v[21]=81 ('Q')
v[22]=117 ('u')
v[23]=111 ('o')
v[24]=116 ('t')
v[25]=101 ('e')
v[26]=115 ('s')
v[27]=58 (':')
v[28]=32 (' ')
v[29]=145 ('?')
v[30]=32 (' ')
v[31]=146 ('?')
v[32]=32 (' ')
v[33]=147 ('?')
v[34]=32 (' ')
v[35]=148 ('?')
Я предполагаю, что вопросительные знаки связаны с тем, на что была установлена моя консоль, но вы можете видеть, что числовые значения верны.