Я пытаюсь установить связь с устройством, которое отправляет следующие два сообщения. Во время получения сообщений неизвестно, какую из двух структур сообщений я получил.
Используя XSD, я взял .xml и создал файлы .xsd и C # для каждого отдельно, но в конечном решении это не практично, поскольку я не знаю сообщения, которое у меня будет. Разработчики, по-видимому, использовали «ParameterValue» в первом случае как массив, а во втором - как простую строку. Возможно ли иметь один фрагмент кода, который будет десериализовать оба сообщения? Если я использую код для первого сообщения во втором, поле ParameterValue представляет собой пустой массив.
== Первое сообщение ==
<Parameters>
<Parameter>
<ParameterName>ResponseCode</ParameterName>
<ParameterValue>2</ParameterValue>
</Parameter>
<Parameter>
<ParameterName>ResponseValue</ParameterName>
<ParameterValue>
<ReturnParameters>
<ReturnParameter>
<ParameterName>Data1</ParameterName>
<ParameterValue>Parameter Not Found</ParameterValue>
</ReturnParameter>
<ReturnParameter>
<ParameterName>Data2</ParameterName>
<ParameterValue>Parameter Not Found</ParameterValue>
</ReturnParameter>
</ReturnParameters>
</ParameterValue>
</Parameter>
</Parameters>
== Второе сообщение ==
<Parameters>
<Parameter>
<ParameterName>ResponseCode</ParameterName>
<ParameterValue>2</ParameterValue>
</Parameter>
<Parameter>
<ParameterName>ResponseValue</ParameterName>
<ParameterValue>Success</ParameterValue>
</Parameter>
</Parameters>