2013-09-18 4 views
0

я обновил вопрос @ xml content changed after serialization & deserialization want to pass in xml to map objectXml Content Изменен После Сериализация и десериализации

Любая помощь будут оценены. Большое спасибо.

Я новичок во всем этом: Я пытаюсь передать в xml-файл с помощью кнопки поиска веб-приложения на службу, позвонить и затем запустить ее.

Я искал и сделал следующее:

string InputFilePath = FileUpload1.PostedFile.FileName; 

MyServiceTypeClass _MyServiceTestObj = new MyServiceTypeClass(); 
XmlSerializer SerializerObj = new XmlSerializer(typeof(MyServiceTypeClass)); 
StreamWriter WriteFileStream = new StreamWriter(@InputFilePath); 
SerializerObj.Serialize(WriteFileStream, _MyServiceTestObj); 
WriteFileStream.Close(); 

FileStream XmlStream = new FileStream(@InputFilePath, FileMode.Open, FileAccess.Read, FileShare.Read); 
MyServiceTypeClass _ServiceTypeLoaded = (MyServiceTypeClass)SerializerObj.Deserialize(XmlStream); 
XmlStream.Close(); 

После того как я запустить его и загрузить файл XML, я обнаружил, что _ServiceTypeLoaded поля почти все нуль для полей. И содержимое файла xml было изменено после выполнения вышеуказанных строк. _ServiceTypeLoaded имеет только 3 поля не null, а файл xml был изменен в другом формате с отсутствием большого количества тегов.

Некоторые Подробнее:
MyServicetypeClass структура:
MyServiceTypeClass унаследованы от класса А и имеет некоторые из своих членов; Класс A унаследовал форму класса B и имеет некоторые из его собственных членов; Класс B унаследован от класса C и имеет свои собственные члены и т. Д. В отношениях есть 5 слоев.

+0

Могли бы вы предоставить больше код? Как для 'MyServiceTypeClass'. – meilke

+0

Это почти наверняка из-за неправильного использования атрибутов сериализации в вашем классе ... попробуйте упростить свою ситуацию до одного уровня наследования с несколькими членами ... если у вас все еще есть проблема, вы можете опубликовать свою простую воспроизводимую проблему для других помочь. Вы также можете рассмотреть использование DataContractSerializer в качестве обычно предпочтительного класса сериализации, и в этом случае атрибуты будут отличаться, однако у вас будет меньше контроля над формой XML. – TCC

+0

спасибо. В моем случае переданные в xmls уже предварительно обработаны, чтобы соответствовать типу службы. Я просто хочу передать в xmls и передать значения, хранящиеся в нем, на объект в C#. Нужно ли в этом случае выполнять сериализацию и десериализацию? или достаточно одного из них? В любом случае, есть ли простой способ для меня сериализовать его? Поскольку существует много типов serviceclass, и будет слишком много работы, если я вручную сериализую для каждого из них. Большое спасибо. – user2751691

ответ

0

Б XSLT для преобразования входного XML в нужном формате XML, а затем использовать его в качестве входных переменных

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