Я проверил несколько валидаторов XML, чтобы убедиться, что документ верен.
В одной области документа все, что следует за ним, отладчик C# скажет, что первый символ следующей строки (после отступа; пробовал также весь документ без него) отформатирован неправильно:
System.InvalidOperationException: в XML-документе (11, 5) есть ошибка.
System.FormatException: входная строка имела неправильный формат
Вот часть кода для чтения/десериализации:
XmlSerializer serializer = new XmlSerializer(typeof(VehicleModelInfo));
using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8))
{
try
{
return (VehicleModelInfo) serializer.Deserialize(reader);
}
catch (System.InvalidOperationException e)
{
Console.WriteLine(e);
// [...]
}
}
Это проблемная строка:
<PovCameraVerticalAdjustmentForRollCage value = "0.000000" />
Он, наряду с другими элементами XML, объявляется:
[XmlElement("PovCameraVerticalAdjustmentForRollCage")]
public float PovCameraVerticalAdjustmentForRollCage { get; set; }
Я не могу понять, почему именно этот (в XML есть много других значений с плавающей запятой) не работает.
Любой совет будет принят во внимание.





Ваша настройка с использованием [XmlElement("PovCameraVerticalAdjustmentForRollCage")] требует, чтобы данные XML выглядели так, как показано ниже.
<PovCameraVerticalAdjustmentForRollCage>0.000000<PovCameraVerticalAdjustmentForRollCage>
Но это не так; вместо этого <PovCameraVerticalAdjustmentForRollCage value = "0.000000" /> — это элемент xml со значением, которое вы ищете в атрибуте с именем value.
Чтобы десериализовать это, вашей VehicleModelInfoмодели необходимо свойство PovCameraVerticalAdjustmentForRollCage для типа, имеющего такое свойство Value, например:
public class VehicleModelInfo
{
public PovCameraVerticalAdjustmentForRollCage PovCameraVerticalAdjustmentForRollCage { get; set; }
}
public class PovCameraVerticalAdjustmentForRollCage
{
[XmlAttribute("value")]
public float Value { get; set; }
}
Хорошо, это должно помочь мне начать. Другой сейчас делает то же самое, так что мне просто нужно выяснить, какие из них ведут себя не так, как другие. Спасибо!