У меня есть следующая XML-схема, которую я пытаюсь десериализовать в объекты C #:
<TMMAI>
<StringReturn>123456789</StringReturn>
<VectorReturn>
<VectorElement>test1</VectorElement>
<VectorElement>test2</VectorElement>
<VectorElement>test3</VectorElement>
<VectorElement>test4</VectorElement>
<VectorElement>test5</VectorElement>
<VectorElement>test6</VectorElement>
<VectorElement>test7</VectorElement>
</VectorReturn>
</TMMAI>
и объекты C #, в которые я хочу десериализоваться (сгенерированные из https://xmltocsharp.azurewebsites.net/,, но вставкав приведенной выше схеме XML):
[XmlRoot(ElementName = "VectorReturn")]
public class VectorReturn
{
[XmlElement(ElementName = "VectorElement")]
public List<string> VectorElement { get; set; }
}
[XmlRoot(ElementName = "TMMAI")]
public class TMMAI
{
[XmlElement(ElementName = "VectorReturn")]
public VectorReturn VectorReturn { get; set; }
[XmlElement(ElementName= "StringReturn")]
public string StringReturn { get; set; }
}
После запуска и использования стандартного XmlDeserializer, VectorElement
имеет длину 0 без данных внутри него.
Я также попытался создать свойсобственная иерархия объектов, которая была следующей, вместо использования инструмента генерации:
[XmlRoot("TMMAI")]
public class TMMAI
{
[XmlElement("StringReturn")]
public string StringReturn { get; set; }
[XmlElement("VectorReturn")]
public VectorReturn VectorReturn { get; set; }
}
public class VectorReturn
{
[XmlElement("VectorElement")]
public List<VectorElement> VectorElements { get; set; }
}
public class VectorElement
{
public string Element { get; set; }
}
Этот приблизил меня - VectorElements
был размером 7, что было правильным количеством <VectorElement>
элементов втестовый XML, но значение каждого VectorElement.Element было null
.
Я близок, но не могу сказать, что не так в этом пункте.Неправильный атрибут?Неправильный дизайн объекта?Нужно использовать атрибут XmlArray?