Этот вопрос задавался ранее, но ответ не работает для меня: так что вот еще раз вопрос:)
У меня есть реальная проблема при попытке десериализации некоторого XML и я надеялся, что кто-то может предложить некоторую помощь,Я прочитал много подобных сообщений, но я не могу решить эту проблему.
Вот XML
<register-account success="false">
<user-name>xxxxx</user-name>
<password>fghgh</password>
<email>test@example.com</email>
</register-account>
Класс, который я пытаюсь десериализовать в:
[Serializable, XmlRoot(ElementName = "register-account", Namespace = "MyNamespace")]
[XmlType("register-account")]
public class RegisterAccountResponse
{
[XmlAttribute("success")]
public bool Success { get; set; }
/// <summary>
/// Gets or sets the Tennant email address
/// </summary>
[XmlElement("email")]
public string Email { get; set; }
/// <summary>
/// Gets or sets the tennant password
/// </summary>
[XmlElement("password")]
public string Password { get; set; }
/// <summary>
/// Gets or sets the Tennant username
/// </summary>
[XmlElement("user-name")]
public string Username { get; set; }
}
Метод десериализации
public static T Deserialize<T>(string data) where T : class
{
var ser = new XmlSerializer(typeof(T));
using (var sr = new StringReader(data))
{
return (T)ser.Deserialize(sr);
}
}
Вызов метода десериализации
var data = Helper.Deserialize<RegisterAccountResponse>(xml);
Исключение:
Произошла ошибка в документе XML (1, 2).---> System.InvalidOperationException: не ожидалось.в Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderData.Read5_data ()
Внутреннее исключение следующим образом:
<register-account xmlns=''> was not expected.
Ответ на вопрос былудалить пространство имен из класса (удалить Namespace = "MyNamespace").Класс, однако, является частью очень большой библиотеки, которая создается автоматически с помощью xsd.exe.Я не хочу ничего менять в сгенерированном классе.Есть ли еще, чтобы решить эту проблему, не изменяя класс?