Чтение XML-файла в кодировке UTF-16 с помощью XmlSerializer - PullRequest
4 голосов
/ 23 ноября 2010

Я звоню в WebService и получаю строку, возвращаемую из WebMethod.Строка - это объект, сериализованный в XML, который должен быть десериализован с использованием System.Xml.XmlSerializer.

Моя проблема заключается в том, что первая строка указывает, что документ имеет кодировку UTF-16:

<?xml version="1.0" encoding="utf-16"?>

Таким образом, при десериализации я получаю сообщение об ошибке:

There is an error in XML document (0, 0).

Он работает для string.Replace ("utf-16", "utf-8"), но должен быть чистый метод длясообщите XmlSerializer?

1 Ответ

5 голосов
/ 23 ноября 2010

Это ни на что не должно повлиять - отлично работает следующее:

using System;
using System.IO;
using System.Xml.Serialization;

[XmlRoot("someType")]
public class Test {
    [XmlAttribute("hello")]
    public string Value { get; set; }
}
static class Program {   
    static void Main()     {
        string xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
<someType hello=""world""/>";
        var ser = new XmlSerializer(typeof(Test));
        Test obj;
        using (var reader = new StringReader(xml)) {
            obj = (Test)ser.Deserialize(reader);
        }
        Console.WriteLine(obj.Value);
    }

}
...