2010-07-15 71 views
3

我有一些xml生成从XML序列化程序..我可以将其转换为SOAP XML?...我正在尝试做ASP.NET C#...请帮我出如何将原始XML转换为C#中的SOAP XML?

+0

我想你需要提供更多关于Web服务或预期XML格式的信息。 – 2010-07-15 23:37:54

回答

1

你只需要创建一个可以由XMLSerializer和SOAPFormatter序列化的数据类。这可能意味着您将需要一个公共属性为XMLSerializer的公共类,并且您需要为SOAPFormatter添加可串行化的属性。否则,它非常简单。

我创建了一个简单的例子来说明我的意思:

[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

我不能使用SoapFormatter它似乎已被弃用我猜...在.net 3.5/4.0 – Vishal 2010-07-15 15:38:49

+0

我想你需要提供更多的信息。您可能需要从它们获取服务规范(WSDL等)。一旦你有服务描述,你可以使用WCF与SOAP服务互操作。 – 2010-07-15 23:36:49

1

有“原始XML”和“SOAP XML”没有这样的事。

你想完成什么?如果你只是想返回XML从Web服务的响应,那么就让它进入一个XmlDocument或的XDocument,只是返回根元素:

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

嗯...我实际上是想发送一些数据到一个url的网络服务...作为XML ...所以我想我应该使用SOAP头或东西enacapsulate它...所以我叫它像“ SOAP XML“ – Vishal 2010-07-15 15:40:47

+0

Web服务表示想要接收什么内容?有没有一个WSDL文件告诉你这种格式?有文件吗? – 2010-07-15 16:28:36

+0

不幸的是没有文件...他们所期望的全部是我的猜测... – Vishal 2010-07-15 19:31:19

0

这听起来像你想换你的XML变成肥皂信封?如果是的话尝试this