2014-09-22 211 views
-1

我有從xsd生成的類,我想用來創建一個xml通過電線發送。我只想在內存中創建文檔,將其轉換爲字符串/字節[]併發送。我的印象是,一旦類被填充,我可以做一個tostring(),它會返回整個文檔。這似乎並非如此......我在這裏做錯了什麼?生成xml消息通過tcp發送

@event myEvent = new @event(); 
myEvent.name = "AddProgram"; 
myEvent.version = 8.0M; 

DateTime myDateTime = new DateTime(); 
myDateTime = DateTime.Now; 
myEvent.time = myDateTime; 

detail myDetail = new detail(); 
myDetail.name = "Program1" 

myEvent.detail = myDetail; 


Controller controller = new Controller(); 
controller.actionSpecified = true; 
controller.action = ControllerAction.Create; 

myDetail.Controller = controller; 

String xmlString = myEvent.ToString(); //this is where i would expect a string. 

我得到了的是這樣的:「事件」

+1

在網頁中搜索(例如)XML序列化,或protobuf的 – CodeCaster 2014-09-22 19:02:34

+1

看看這個[鏈接](http://stackoverflow.com/a/2434558/3877877) – 2014-09-22 19:03:14

+1

爲什麼你期待的是的ToString ()將返回XML?因爲它是由XSD製作的?這不是黑匣子U可以在你的代碼中看到並假定ToString()沒有被覆蓋。 U可以自己寫,但是因爲看起來U不太熟悉.net - 使用XmlSerializer來生成XML,所以XSD生成的類必須具有這個屬性。 – 2014-09-22 19:03:39

回答

1

我不知道,你有你的信息toString()方法會給你的類的XML表示,但事實並非如此。你應該做的是參考這篇關於XML序列化的文章。

http://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx

如果你有一個類類型的事件,那麼你需要做以下將其序列化到XML,另外,作爲一個小珍聞我會使用關鍵詞作爲類或變量定義,如果遠離儘可能,但如果你不能控制那個,那麼你的雙手就會被束縛住。

@event myEvent = new @event(); 
myEvent.name = "AddProgram"; 
myEvent.version = 8.0M; 

string xmlIWant= ""; 
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(@event); 
using (StringWriter writer = new StringWriter()) 
{ 
    x.Serialize(writer, myEvent); 
    xmlIWant = writer.ToString(); 
} 
+0

這並不是我真正期待它的工作。我有類似的java代碼,但它有一個總體的文檔類型,實際上會做一個tostring並轉換整個文檔。我有點使用它作爲我的例子,並與.net的東西混合。我剛剛與序列化有根本的脫節。我遇到了一堆例子,不能把它放在一起。 – Jason 2014-09-22 19:24:57

+0

我看到一切都很好,只是很好奇你從那裏得到了什麼。並不是說你無法創建自己的ToStringXML擴展方法,並在其中插入序列化片段,以返回它將返回的位置和xml字符串。 – Bearcat9425 2014-09-22 19:29:25