2010-07-15 5 views
3

J'ai un xml généré à partir du XML Serializer ..Comment puis-je le convertir en XML SOAP? ... J'essaie de le faire ASP.NET C# ... s'il vous plaît aidez-moiComment convertir du XML brut en SOAP XML en C#?

+0

Je pense que vous devez fournir plus d'informations sur le service Web ou le format XML attendu. –

Répondre

1

Vous aurez juste besoin pour créer une classe de données pouvant être sérialisée à la fois par XMLSerializer et SOAPFormatter. Cela signifie probablement que vous aurez besoin d'une classe publique avec des propriétés publiques pour XMLSerializer et que vous devrez ajouter l'attribut Serializable pour SOAPFormatter. Sinon, c'est assez simple.

J'ai créé un exemple pour illustrer ce que Naive je veux dire:

[Serializable] 
public class MyData 
{ 
    public int MyNumber { get; set; } 
    public string Name { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      MyData data = new MyData() { MyNumber = 11, Name = "StackOverflow" }; 

      XmlSerializer serializerXML = new XmlSerializer(data.GetType()); 
      serializerXML.Serialize(stream, data); 

      stream.Seek(0, SeekOrigin.Begin); 

      data = (MyData)serializerXML.Deserialize(stream); 

      // We're cheating here, because I assume the SOAP data 
      // will be larger than the previous stream. 
      stream.Seek(0, SeekOrigin.Begin); 

      SoapFormatter serializerSoap = new SoapFormatter(); 
      serializerSoap.Serialize(stream, data); 

      stream.Seek(0, SeekOrigin.Begin); 

      data = (MyData)serializerSoap.Deserialize(stream); 
     } 
    } 
} 
+0

Je ne peux pas utiliser SoapFormatter il semble qu'il était obsolète je suppose ... .net 3.5/4.0 – Vishal

+0

Je suppose que vous devez fournir plus d'informations. Vous avez probablement besoin d'obtenir la spécification de service (WSDL etc) d'eux. Vous pouvez utiliser WCF pour interagir avec les services SOAP une fois que vous avez la description du service. –

1

Il n'y a pas une telle chose comme "XML brut" et "XML SOAP".

Qu'essayez-vous d'accomplir? Si vous essayez juste de revenir XML comme une réponse d'un service Web, puis juste obtenir dans un XmlDocument ou XDocument, et il suffit de retourner l'élément racine:

[WebMethod] 
public XmlElement ReturnXml() 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(fromSomewhere); 
    return doc.DocumentElement; 
} 
+0

hmm ... Je voulais en fait envoyer des données à un service web url ... comme xml ... alors j'ai pensé que je devrais utiliser l'en-tête SOAP ou quelque chose pour l'encapsuler ... donc je l'appelais comme " SOAP XML " – Vishal

+0

Qu'est-ce que le service Web dit vouloir recevoir? Y at-il un fichier WSDL vous indiquant le format? Y a-t-il une documentation –

+0

il n'y a malheureusement pas de documentation ... tout ce qu'ils attendent est xml ma conjecture ... – Vishal

0

il semble que vous voulez envelopper votre xml dans une enveloppe de savon? Si oui, essayez this