2011-02-25 89 views
3

我正在向Web服务发送请求,该请求需要包含XML的字符串,其中我已经给出了XSD。为Web服务创建XML字符串

我已经运行了xsd.exe,并基于此创建了一个类,但我不确定创建要发送的xml字符串的最佳方式,例如流,XMLDocument或某种形式的序列化。

UPDATE

我发现这个here

public static string XmlSerialize(object o) 
    { 
     using (var stringWriter = new StringWriter()) 
     { 
      var settings = new XmlWriterSettings 
      { 
       Encoding = Encoding.GetEncoding(1252), 
       OmitXmlDeclaration = true 
      }; 
      using (var writer = XmlWriter.Create(stringWriter, settings)) 
      { 
       var xmlSerializer = new XmlSerializer(o.GetType()); 
       xmlSerializer.Serialize(writer, o); 
      } 
      return stringWriter.ToString(); 
     } 
    } 

,它可以让我控制的标签属性。

回答

4

我在几次做的事情是创建一个类/结构来保存客户端程序中的数据并将数据串行化为一个字符串。然后我发出Web请求并发送该XML字符串。下面是我使用序列化一个对象到XML代码:

public static string SerializeToString(object o) 
{ 
    string serialized = ""; 
    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 

    //Serialize to memory stream 
    System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(o.GetType()); 
    System.IO.TextWriter w = new System.IO.StringWriter(sb); 
    ser.Serialize(w, o); 
    w.Close(); 

    //Read to string 
    serialized = sb.ToString(); 
    return serialized; 
} 

只要对象的所有内容都是可序列化将任何对象序列化。

+0

感谢迈克,这符合我期待使用的内容。 – 2011-02-25 15:21:48

3

使用Xstream框架生成一个xml字符串。希望这可以帮助!

+0

感谢,看上去相关和有趣。 – 2011-02-25 15:11:47

0

这里是我以前做:

private static string CreateXMLString(object o) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(object)); 
     var stringBuilder = new StringBuilder(); 
     using (var writer = XmlWriter.Create(stringBuilder)) 
     { 
      serializer.Serialize(writer, o); 
     } 
     return stringBuilder.ToString(); 
    }