2016-11-03 2 views
0

Я понятия не имею, как десериализовать XML-документ, который поступает в службу WCF.deserialize XmlObjectSerializer document

Example of XML 
<PERSON> 
    <NAME>MyName</NAME> 
    <SURNAME>MyName</SURNAME> 
</PERSON> 

Я написал класс Person:

[XmlRoot("PERSON")] 
public class PERSON 
{ 
    [XmlElement("name")] 
    public string name { get; set; } 

    [XmlElement("Surname")] 
    public DateTime Surname { get; set; } 
} 

Ниже я должен реализовать метод:

public bool OperationWardrobes(XmlObjectSerializer document) 
{ 
    if (document == null) 
     return false; 
    else{ 
     //Deserialize a document and get information in variables 
     } 
} 

Любой человек может помочь мне, пожалуйста? Спасибо заранее. Wiper

+0

Идея состоит в том, что у вас должна быть ссылка на 'wsdl'. Он будет генерировать классы клиентов и использовать их. Не требуется ручная разборка. –

ответ

0

Ну, я никогда не сталкивался с этим XmlObjectSerializer, который вы используете, но вы можете это сделать, загрузив его в XDocument.

using System.Xml; 
using System.Xml.Linq; 
using System.Xml.Serialization; 

    public bool OperationWardrobes(XDocument document) 
    { 
     if (document == null) 
      return false; 

     try 
     { 
      // no need for else here 
      Person person = null; 
      XmlSerializer serializer = new XmlSerializer(typeof(Person)); 
      using (var reader = document.CreateReader()) 
      { 
       person = serializer.Deserialize(reader); 
       // do stuff 
       return true; 
      } 
     } 
     catch (Exception ex) 
     { 
      // log ex 
      return false; 
     } 
    } 

Надеюсь, что это поможет.

+0

Отлично, спасибо за ваш ответ. Вместо этого, в отношении «// no need for else here», вы определенно правы, это был надзор. – Wiper