2011-02-25 105 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(); 
    }