Я работаю над .NET-проектом, который интегрируется с внешней компанией. Эта компания будет отправлять нам XML-сообщения через HTTP POST (raw XML, а не SOAP). В основном есть три разных типа XML-сообщений, которые они будут отправлять нам, и все они имеют свои собственные XSD. Между этими XSD нет иерархии наследования, все они являются в основном автономными XML-сущностями.XML HTTP POST интеграции в .NET
В настоящее время мы просто используем класс IHttpHandler .ashx для обработки XML. Мы создали класс из каждого XSD и используем XmlSerializer для преобразования различных XML-сообщений в объекты. Это не идеально, потому что нам нужно знать тип сообщения, прежде чем создавать соответствующий XmlSerializer для его обработки. В настоящее время мы просто просматриваем имя корневого элемента в сообщении, чтобы выбрать, какой тип передать в XmlSerializer.
Должен быть лучший способ сделать это ... Есть ли что-то в WCF, которое может сделать это автоматически с помощью простого XML? Или имеется ли XML-сериализатор, который может динамически сериализовать несколько типов? Любые другие предложения?
Не все XML могут быть прочитаны в DataSet. –
Это правда, конечно. Но он сказал, что использовал xsd для создания классов. Это означало мне, что xml, вероятно, недостаточно сложный, чтобы исключить использование набора данных. Он не будет работать со всеми XML, но если это так, есть значительные преимущества - сортировка, простота отображения результатов и т. Д. –
Единственный XSD, который может представлять данные, которые могут быть загружены в DataSet, - это XSD, созданный для представления DataSet. XSD гораздо более общий, чем крошечный поднабор, используемый конструктором DataSet в Visual Studio. –