Я надеюсь, что кто-нибудь сможет мне с этим помочь.
Мне нужно сериализовать запрос из XML, чтобы его можно было преобразовать в вызов SOAP. Проблема в том, что у меня проблемы с успехом, когда в xml отсутствует определение xmlns.
Прежде всего, у меня есть класс GetRegistrationStatusRequest. Он был автоматически сгенерирован с помощью инструмента XSD из предоставленного заказчиком XSD. Класс выглядит следующим образом (обратите внимание, что я заменил клиентский URL-адрес)
//
// This source code was auto-generated by xsd, Version=4.0.30319.18020.
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.18020")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://some.url/srvc/getregistrationstatus/v1_0/request/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://some.url/srvc/getregistrationstatus/v1_0/request/", IsNullable=false)]
public partial class GetRegistrationStatusRequest : ServiceRequest {
... auto generated code
Как уже упоминалось, он создается автоматически. Я включил это для справки.
Мой код для фактической десериализации Xml выглядит следующим образом:
XmlSerializer serializer = new XmlSerializer(typeof(GetRegistrationStatusRequest));
GetRegistrationStatusRequest request = (GetRegistrationStatusRequest)serializer.Deserialize(new StringReader(RequestXml.OuterXml));
Если я использую XML следующим образом, он работает нормально:
<GetRegistrationStatusRequest xmlns="http://some.url//srvc/getregistrationstatus/v1_0/request/">
<PlateNo>PlateNo1</PlateNo>
</GetRegistrationStatusRequest>
Однако XML, который я получаю (который находится вне моего контроля), не имеет определенного xmlns. Вместо этого это выглядит так:
<GetRegistrationStatusRequest>
<PlateNo>PlateNo1</PlateNo>
</GetRegistrationStatusRequest>
Когда я пытаюсь десериализовать это, я получаю сообщение «Ошибка в XML-документе (1,2)».
Мне интересно, действительно ли возможно получить Xml для десериализации без необходимости определения xmlns?
Любая помощь будет принята с благодарностью.