您缺少公制类。每个 XmlElement 都需要一个对应的类才能使序列化工作。 Units 有一个 Metric 元素。你错过了那个。
使用这些课程:
[Serializable]
[XmlRoot(ElementName = "LandXML")]
public class LandXML
{
[XmlElement(ElementName = "Units")]
public Units Units { get; set; }
}
public class Units
{
[XmlElement(ElementName = "Metric")]
public Metric Metric { get; set; }
}
public class Metric
{
[XmlAttribute(AttributeName = "linearUnit" )]
public string LinearUnit { get; set; }
}
然后进行此更改:
Console.WriteLine($"LinearUnit: {landXML.Units.Metric.LinearUnit}");
会输出
线性单位:米
知道有在线工具可以帮助您从 Xml 生成数据传输对象,例如 https://xmltocsharp.azurewebsites.net/ 可以做到这一点,或者您最喜欢的 IDE 可能会提供一个扩展来做同样的事情。