Что бы быть лучшим способом для разбора XML, такие как:Наиболее элегантный способ проанализировать данные XML и обрабатывать значения элементов пользовательского массива в C#
<?xml version=""1.0"" encoding=""utf-8"" ?>
<shapeTemplate>
<vertex_contours>
<vertex_contour>
<data>1 2 3 4 5 ... </data>
</vertex_contour>
...
</vertex_contours>
</shapeTemplate>
Мои инстинкты говорят мне, что я должен использовать C# десериализации и использования XmlSerializer, например :
[Serializable]
[XmlRoot("shapeTemplate")]
public class ShapeTemplate
{
[XmlArray("vertex_contours")]
[XmlArrayItem("vertex_contour", typeof(VertexContour))]
public VertexContour[] VertexContours { get; set; }
}
Но потом я понял, XmlSerializer не мог просто разобрать и преобразовать < данные > в IEnumerable <INT>
Так мне было интересно, что предложенный подход к обработке такой ситуации. Первоначально я использовал XElement.Parse (...), но я надеялся, что будет более элегантное решение, чем это.
Хотя это правда, что 'XmlSerializer' не могу сериализации/десериализации из/в' 'IEnumerable вы можете реализовать' IXmlSerializable'-интерфейс себя и для чтения/записи ваших данных , Для получения дополнительной информации см. Https://www.codeproject.com/Articles/43237/How-to-Implement-IXmlSerializable-Correctly. –
HimBromBeere
Действительно, IXmlSerializable выполняет то, что я ищу, единственный вопрос заключается в том, лучше или хуже этот подход, чем использование Linq для Xml ... – zman
Получение элементов массива является сложным, потому что у вас нет тега для каждого элемента в XML , Поэтому вам нужно разобрать его самостоятельно. Можете ли вы добавить тег для каждого элемента? – KernelMode