Analyser Soap XML en Objet en C#
J'ai le texte suivant SOAP XML
string soap = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns='http://schemas.abudhabi.ae/sso/2010/11'>" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<ns:GetUserProfileResponse>" +
"<!--Optional:-->" +
"<ns:userid>?</ns:userid>" +
"<!--Optional:-->" +
"<ns:firstNameAr>?</ns:firstNameAr>" +
"<!--Optional:-->" +
"<ns:firstNameEn>?</ns:firstNameEn>" +
"<!--Optional:-->" +
"<ns:middleNameAr>?</ns:middleNameAr>" +
"<!--Optional:-->" +
"<ns:middleNameEn>?</ns:middleNameEn>" +
"<!--Optional:-->" +
"<ns:thirdNameAr>?</ns:thirdNameAr>" +
"<!--Optional:-->" +
"<ns:thirdNameEn>?</ns:thirdNameEn>" +
"<!--Optional:-->" +
"<ns:fourthNameAr>?</ns:fourthNameAr>" +
"<!--Optional:-->" +
"<ns:fourthNameEn>?</ns:fourthNameEn>" +
"<!--Optional:-->" +
"<ns:familyNameAr>?</ns:familyNameAr>" +
"<!--Optional:-->" +
"<ns:familyNameEn>?</ns:familyNameEn>" +
"<!--Optional:-->" +
"<ns:authLevel>?</ns:authLevel>" +
"<!--Optional:-->" +
"<ns:dateOfBirth>?</ns:dateOfBirth>" +
"<!--Optional:-->" +
"<ns:gender>?</ns:gender>" +
"<!--Optional:-->" +
"<ns:nationalityCode>?</ns:nationalityCode>" +
"<!--Optional:-->" +
"<ns:idn>?</ns:idn>" +
"<!--Optional:-->" +
"<ns:modifyTimestamp>?</ns:modifyTimestamp>" +
"<!--Optional:-->" +
"<ns:prefComChannel>?</ns:prefComChannel>" +
"<!--Optional:-->" +
"<ns:secretQuestionAnswer>?</ns:secretQuestionAnswer>" +
"<!--Optional:-->" +
"<ns:secretQuestionId>?</ns:secretQuestionId>" +
"<!--Optional:-->" +
"<ns:address>" +
"<!--Optional:-->" +
"<ns:additionalAddressInfo>?</ns:additionalAddressInfo>" +
"<!--Optional:-->" +
"<ns:city>?</ns:city>" +
"<!--Optional:-->" +
"<ns:fax>?</ns:fax>" +
"<!--Optional:-->" +
"<ns:residenceCountry>?</ns:residenceCountry>" +
"<!--Optional:-->" +
"<ns:poBox>?</ns:poBox>" +
"<!--Optional:-->" +
"<ns:stateOrEmirate>?</ns:stateOrEmirate>" +
"<!--Optional:-->" +
"<ns:streetNameAndNumber>?</ns:streetNameAndNumber>" +
"<!--Optional:-->" +
"<ns:zipCode>?</ns:zipCode>" +
"</ns:address>" +
"<!--Optional:-->" +
"<ns:contact>" +
"<!--Optional:-->" +
"<ns:email>?</ns:email>" +
"<!--Optional:-->" +
"<ns:mobilePhoneNumber>?</ns:mobilePhoneNumber>" +
"<!--Optional:-->" +
"<ns:website>?</ns:website>" +
"<!--Optional:-->" +
"<ns:workPhone>?</ns:workPhone>" +
"</ns:contact>" +
"</ns:GetUserProfileResponse>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
Je voulais Analyser ou de le Convertir dans la Classe suivante
public class UserProfile
{
public string FirstNameAR { get; set; }
public string FirstNameEN { get; set; }
public string MiddleNameAR { get; set; }
public string MiddleNameEN { get; set; }
public string ThirdNameAR { get; set; }
public string ThirdNameEN { get; set; }
public string FourthNameAR { get; set; }
public string FourthNameEN { get; set; }
public string FamilyNameAR { get; set; }
public string FamilyNameEN { get; set; }
public Boolean AuthLevelSpecified { get; set; }
public DateTime DateOfBirth { get; set; }
public bool DateOfBirthSpecified { get; set; }
public Boolean GenderTypeSpecified { get; set; }
public string NationalityCode { get; set; }
public string IDN { get; set; }
public Boolean ModifyTimeStampSpecified { get; set; }
public DateTime ModifyTimeStamp { get; set; }
// public PrefComChannelType PrefComChannelType { get; set; }
public Boolean PrefComChannelTypeSpecified { get; set; }
public string SecretQuestion { get; set; }
public int SecretQuestionId { get; set; }
public Boolean SecretQuestionSpecified { get; set; }
}
et mon code est :
var Value = XDocument.Parse(soap);
XNamespace ns = @"http://schemas.xmlsoap.org/soap/envelope/";
var unwrappedResponse = Value.Descendants((XNamespace)"http://schemas.xmlsoap.org/soap/envelope/" + "Body").First().FirstNode;
XmlSerializer oXmlSerializer = new XmlSerializer(typeof(UserProfile));
var responseObj = (UserProfile)oXmlSerializer.Deserialize(unwrappedResponse.CreateReader());
Je suis la suite de cette question la suppression ou l'extraction de savon en-tête et le corps du message soap
Mais je suis d'erreur.Est-il quelque chose de mal avec ce Code.S'Il Vous Plaît Aider
Quelle est l'erreur ??
{"<GetUserProfileResponse xmlns='schémas.abudhabi.ae/sso/2010/11 " > n'était pas prévu."}
{"<GetUserProfileResponse xmlns='schémas.abudhabi.ae/sso/2010/11 " > n'était pas prévu."}
OriginalL'auteur BASEER HAIDER JAFRI | 2015-09-09
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour faire de votre nom de la classe et de la propriété des noms correspondent aux noms dans le fichier XML --
"GetUserProfileResponse"
et, par exemple,"firstNameAr"
, en gardant à l'esprit que la sérialisation XML est sensible à la casse. Sinon, vous devez utiliser les attributs qui contrôlent la sérialisation XML à la carte l'élément XML de noms à votre classe et les noms de propriété. Vous devez également indiquer leXmlSerializer
que votre classe est sérialisé dans le"http://schemas.abudhabi.ae/sso/2010/11"
espace de noms.Les attributs qui sont utiles pour vous:
attribut xmlrootattribute
- vous permet de spécifier le nom de l'élément racine créé à partir d'un type donné, ainsi que son espace de noms.XmlElementAttribute
- vous permet de spécifier les noms d'élément de membres d'un type sérialisées.Ainsi:
Pour plus d'instructions, reportez-vous Le contrôle de la Sérialisation XML à l'Aide d'Attributs.
Vous pouvez également générer automatiquement vos classes. Voir Générer la classe de C# à partir de XML pour les instructions.
OriginalL'auteur dbc