Если вы знаете, что XML будет в том формате, который вы указали в вопросе, и у вас есть готовый класс, вы можете украсить его так, чтобы он был десериализован.
Класс десериализации:
[XmlTypeAttribute]
[XmlRootAttribute("MyClass")]
public class MyClass
{
[XmlElementAttribute("Name")]
public string Name { get; set; }
[XmlElementAttribute("Bytes")]
public byte[] Bytes { get; set; }
}
Метод десериализации
public static object Deserialize(string xml)
{
var deserializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
using (var reader = XmlReader.Create(new StringReader(xml)))
{
return (MyClass)deserializer.Deserialize(reader);
}
}
Основной метод
static void Main(string[] args)
{
string xml = @"<MyClass>
<Name>Test</Name>
<Bytes>U2NhcnkgQnVnZ2Vy</Bytes>
</MyClass>";
MyClass obj = (MyClass)Deserialize(xml);
Console.ReadKey();
}
Обязательно добавьте следующие операторы использования:
using System.Xml.Serialization;
using System.Xml;
Он десериализовал его в obj с «Test» в качестве байтового массива.
Если вы генерируете XSD во время выполнения, то нет никакого способа узнать, какие свойства существуют, и было бы просто использовать отражение дляпроверить определенные свойства, а затем выяснить, к каким типам они относятся, это то, что вам нужно?