2014-09-22 4 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

+1

взглянуть на это [ссылка] (http://stackoverflow.com/a/2434558/3877877) –

+1

Почему вы ждете, что ToString() вернет XML? Потому что это было сделано из XSD? Это не черный ящик U, который может видеть ваш код и предположить, что ToString() не переодевается. U может написать это самостоятельно, но, как кажется, U мало знакомы с .net - используйте XmlSerializer для создания XML, для классов XSD-классов должны быть атрибуты для этого, я думаю. –

ответ

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

+0

Я вижу, все хорошо, просто было любопытно, откуда вы это взяли. Нельзя сказать, что вы не могли создать свой собственный метод расширения ToStringXML и вставить фрагмент сериализации там, где он будет возвращен, и строку xml. – Bearcat9425

Смежные вопросы