Вот простой пример, основанный на предоставленной вами информации. По сути, вам нужно будет создать отдельный класс для anotherElment
, который содержит string
.
Вы можете точно контролировать, как ваш класс анализирует элементы Xml, используя атрибуты , которые в основном отображают свойства вашего класса на элементы / атрибуты в файле Xml. Так, например, поскольку ваш элемент документа в предоставленном вами примере Xml - root
, я явно определяю, что MyClass
имеет элемент документа с именем root
, соответствующий вашему XML. По умолчанию, сериализатор будет искать элемент с именем MyClass
, и если вы его опустите, метод десериализации будет выбрасывать.
Это должно помочь вам начать:
using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
[XmlRoot("root")]
public class MyClass
{
public MyClass()
{
}
public string product { get; set; }
[XmlElement("SomeHighLevelElement")]
public List<SomeHighLevelElement> ListWrapper { get; set; }
}
public class SomeHighLevelElement
{
public AnotherElment anotherElment { get; set; }
}
public class AnotherElment
{
public string lowestElement { get; set; }
}
И пример теста на основе предоставленного вами XML:
using System.Xml;
using System.Xml.Serialization;
using System.IO;
.
.
.
public void Test()
{
string xml = @"<root>
<product>product name</product>
<SomeHighLevelElement>
<anotherElment>
<lowestElement>foo</lowestElement>
</anotherElment>
</SomeHighLevelElement>
<SomeHighLevelElement>
<anotherElment>
<lowestElement>bar</lowestElement>
</anotherElment>
</SomeHighLevelElement>
<SomeHighLevelElement>
<anotherElment>
<lowestElement>baz</lowestElement>
</anotherElment>
</SomeHighLevelElement>
</root>";
MyClass c = Deserialize<MyClass>(xml);
}
public T Deserialize<T>(string xml)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new StringReader(xml));
}