Visual C# - 请帮我反序列化! [英] Visual C# - Help me deserialize this please!

查看:64
本文介绍了Visual C# - 请帮我反序列化!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们!所以我一直在研究一个项目,它完成了99%,我需要做的就是添加一个Reader for XML。



我有一个序列化数据类,在我的程序中获取并设置我的大部分对象。所有变量都转换为data.FirstNames等如此...

  private   void  btnSaveRatings_Click( object  sender,EventArgs e)
{

// 将数据写入外部文件。
SerializedDataClass data = new SerializedDataClass();


// 获取玩家信息
数据.FirstName =((Library1.Player)cmbPlayers.SelectedItem).FirstName;
data.LastName =((Library1.Player)cmbPlayers.SelectedItem).LastName;

// 处理小队信息。
data.SquadName = ((Library1.Squad1)cmbSquad.SelectedItem).SquadName;

// 所有技能都是从数据输入中收集的。
data.SkillName =(cmbSkill.SelectedItem as Library1.Skill).Name;
data.SkillName2 =(cmbSkill2.SelectedItem as Library1.Skill2).Name;
data.SkillName3 =(cmbSkill3.SelectedItem as Library1.Skill3).Name;
data.SkillName4 =(cmbSkill4.SelectedItem as Library1.Skill4).Name;
data.SkillName5 =(cmbSkill5.SelectedItem as Library1.Skill5).Name;
data.SkillName6 =(cmbSkill6.SelectedItem as Library1.Skill6).Name;
data.SkillName7 =(cmbSkill7.SelectedItem as Library1.Skill7).Name;
data.SkillName8 =(cmbSkill8.SelectedItem as Library1.Skill8).Name;
data.SkillName9 =(cmbSkill9.SelectedItem as Library1.Skill9).Name;
data.SkillName10 =(cmbSkill10.SelectedItem as Library1.Skill10).Name;
data.SkillName11 =(cmbSkill11.SelectedItem as Library1.Skill11).Name;

// 所有技能等级均来自数据输入。
data.StandardRating =(cmbRating1.SelectedItem as Library1.SkillRating).Name;
data.SpinRating =(cmbRating2.SelectedItem as Library1.SkillRating2).Name;
data.PopRating =(cmbRating3.SelectedItem as Library1.SkillRating3).Name;
data.FrontRating =(cmbRating4.SelectedItem as Library1.SkillRating4).Name;
data.RearRating =(cmbRating5.SelectedItem as Library1.SkillRating5).Name;
data.SideRating =(cmbRating6.SelectedItem as Library1.SkillRating6).Name;
data.ScrabbleRating =(cmbRating7.SelectedItem as Library1.SkillRating7).Name;
data.DropRating =(cmbRating8.SelectedItem as Library1.SkillRating8).Name;
data.PuntRating =(cmbRating9.SelectedItem as Library1.SkillRating9).Name;
data.GrubberRating =(cmbRating10.SelectedItem as Library1.SkillRating10).Name;
data.GoalRating =(cmbRating11.SelectedItem as Library1.SkillRating11).Name;

// 从texbox获取信息。
data.Comment = txtComment1.Text;

// 创建XmlSerializer以将数据序列化为文件
XmlSerializer xs = new XmlSerializer( typeof (SerializedDataClass));
使用(FileStream fs = new FileStream(data.FirstName + data.LastName + Data.xml,FileMode.Create))
{
xs.Serialize( fs,data);
}

// 告诉用户数据已保存。
MessageBox.Show(data.FirstName + data.LastName + 的数据已保存。 成功!);
}











这是我的数据保存到XML的方式,使用Pre-fix FirstName变量来区分XML文件。



I已经搜遍了所有,但似乎无法找到如何将此文件读回我的程序。谁能帮我?这是我的项目,这一步就是这样。



它需要能够读取所有这些信息,以便在程序关闭时,并重新打开,它读取现有的XML文件,并保持记录在节目结束前输入的玩家统计数据。



玩家通过组合选择 - 框,然后然后用组合框输入统计数据并进行转换和序列化。



希望那里有一个可以让我失望的wizz,我'非常感激!

解决方案

停止使用过时和丑陋的东西,使用更好,更强大,一致,灵活,通用且更易于使用的东西: a href =https://msdn.microsoft.com/en-us/library/ms733127%28v=vs.110%29.aspx> https://msdn.microsoft.com/en-us/library/ms733127 %28v = vs.110%29.aspx [ ^ ]。



请查看我过去的答案:

创建属性文件...... [ ^ ],

如何在表单应用程序中使用XML文件编写器和阅读器? [ ^ ]。



-SA


hey guys! So I have been working on a project and it's 99% done,all I need to do is add in a Reader for XML.

I have a Serialized Data Class that gets and sets most of my objects in my program. All variables are converted to data.FirstNames etc like so...

private void btnSaveRatings_Click(object sender, EventArgs e)
       {

           //Writes data to an external file.
           SerializedDataClass data = new SerializedDataClass();


           //Gets player information
           data.FirstName = ((Library1.Player)cmbPlayers.SelectedItem).FirstName;
           data.LastName = ((Library1.Player)cmbPlayers.SelectedItem).LastName;

           //Handles squad information.
           data.SquadName = ((Library1.Squad1)cmbSquad.SelectedItem).SquadName;

           //All skills are gathered from data inputs.
           data.SkillName = (cmbSkill.SelectedItem as Library1.Skill).Name;
           data.SkillName2 = (cmbSkill2.SelectedItem as Library1.Skill2).Name;
           data.SkillName3 = (cmbSkill3.SelectedItem as Library1.Skill3).Name;
           data.SkillName4 = (cmbSkill4.SelectedItem as Library1.Skill4).Name;
           data.SkillName5 = (cmbSkill5.SelectedItem as Library1.Skill5).Name;
           data.SkillName6 = (cmbSkill6.SelectedItem as Library1.Skill6).Name;
           data.SkillName7 = (cmbSkill7.SelectedItem as Library1.Skill7).Name;
           data.SkillName8 = (cmbSkill8.SelectedItem as Library1.Skill8).Name;
           data.SkillName9 = (cmbSkill9.SelectedItem as Library1.Skill9).Name;
           data.SkillName10 = (cmbSkill10.SelectedItem as Library1.Skill10).Name;
           data.SkillName11 = (cmbSkill11.SelectedItem as Library1.Skill11).Name;

           //All skill ratings are gathered from data inputs.
           data.StandardRating = (cmbRating1.SelectedItem as Library1.SkillRating).Name;
           data.SpinRating = (cmbRating2.SelectedItem as Library1.SkillRating2).Name;
           data.PopRating = (cmbRating3.SelectedItem as Library1.SkillRating3).Name;
           data.FrontRating = (cmbRating4.SelectedItem as Library1.SkillRating4).Name;
           data.RearRating = (cmbRating5.SelectedItem as Library1.SkillRating5).Name;
           data.SideRating = (cmbRating6.SelectedItem as Library1.SkillRating6).Name;
           data.ScrabbleRating = (cmbRating7.SelectedItem as Library1.SkillRating7).Name;
           data.DropRating = (cmbRating8.SelectedItem as Library1.SkillRating8).Name;
           data.PuntRating = (cmbRating9.SelectedItem as Library1.SkillRating9).Name;
           data.GrubberRating = (cmbRating10.SelectedItem as Library1.SkillRating10).Name;
           data.GoalRating = (cmbRating11.SelectedItem as Library1.SkillRating11).Name;

           //Get information from texbox.
           data.Comment = txtComment1.Text;

           // Create an XmlSerializer to serialize the data to a file
           XmlSerializer xs = new XmlSerializer(typeof(SerializedDataClass));
           using (FileStream fs = new FileStream(data.FirstName + data.LastName + "Data.xml", FileMode.Create))
           {
               xs.Serialize(fs, data);
           }

           //Tells the user that the data has been saved.
           MessageBox.Show(data.FirstName + data.LastName + "'s Data has been saved.", "Success!");
       }


.



This is how my data is saved to XML, using the Pre-fix FirstName variable to differ the XML files from one another.

I have searched all over, but can't seem to find out how to read this file back into my program. Can anyone help me? It's for my project and this step is all that is in the way.

It needs to be able to read all of this information, so that when the program is closed, and re-opened, it reads existing XML files, and keeps the player stats recorded that were entered prior to the program closing.

The players are selected via combo-box, and then the stats are then entered with combo-boxes and converted and serialized.

Hopefully there's a wizz out there that can get this down for me, I'd be very grateful!

解决方案

Stop suffering from the obsolete and ugly, use something much better, more powerful, consistent, flexible, universal and much easier to use: https://msdn.microsoft.com/en-us/library/ms733127%28v=vs.110%29.aspx[^].

Please see my past answers:
Creating property files...[^],
How can I utilize XML File streamwriter and reader in my form application?[^].

—SA


这篇关于Visual C# - 请帮我反序列化!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆