2017-09-22 3 views
0

J'ai besoin d'aide en ce qui concerne la désérialisation de ce genre de xml en C#:Comment désérialiser une requête REST POST xml avec un nœud à une ligne ayant plusieurs attributs?

<Request> 
    <AccountStage att1="419749" att2="575474" att3="800177" att4="096057" att5="917185" att6="017585" att7="huKuBgcQ" att8="stgs10" att9="ACTIVE" att10="2" att11="2"/> 
</Request> 

Si j'utilise la fonction de VS, et convertir la demande « Collage spécial » que les classes xml, quand je veux utiliser la demande et l'envoyer au serveur, il modifie le format comme suit:

<Request> 
<AccountStage> 
    <att1>22222</att1>  
    <att2>22222</att2>  
    <att3>22222</att3>  
    <att4>2</att4>  
    <att5>2</att5> 
    <att6>22222</att6> 
    <att7>Ion</att7>  
    <att8>agg3</att8>  
    <att9>ACTIVE</att9>  
    <att10>2</att10>  
    <att11>2</att11> 
</AccountStage> 
</Request> 
+0

ajoutez le code de votre classe – MikkaRin

Répondre

0

Utilisez XmlAttribute pour spécifier comment définir/interpréter les membres:

using System.IO; 
using System.Xml.Serialization; 

namespace WpfApp2 
{ 
    internal class Test 
    { 
     private readonly string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 

<Request> 
    <AccountStage att1=""419749"" att2=""575474"" att3=""800177"" att4=""096057"" att5=""917185"" att6=""017585"" att7=""huKuBgcQ"" 
       att8=""stgs10"" att9=""ACTIVE"" att10=""2"" att11=""2"" /> 
</Request>"; 

     public Test() 
     { 
      Request request; 

      // serialize 
      var serializer = new XmlSerializer(typeof(Request)); 
      using (var reader = new StringReader(xml)) 
      { 
       request = (Request) serializer.Deserialize(reader); 
      } 

      // deserialize 

      request.AccountStage.Attribute1 = "abcd"; 

      using (var writer = new StringWriter()) 
      { 
       serializer.Serialize(writer, request); 
       var s = writer.ToString(); 
      } 
     } 
    } 

    public class Request 
    { 
     public AccountStage AccountStage { get; set; } 
    } 

    public class AccountStage 
    { 
     [XmlAttribute("att1")] 
     public string Attribute1 { get; set; } 
    } 
} 

Résultat

<?xml version="1.0" encoding="utf-16"?> 
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <AccountStage att1="abcd" /> 
</Request>