[英]How do I deserialize XML file?
I have several xml files with the same structure, and I would like to have all data in one List.我有几个结构相同的 xml 文件,我想将所有数据放在一个列表中。 A list of players.
球员名单。
Each xml contains thousands of players.每个 xml 包含成千上万的玩家。
Unfortunatly, I have only the first player of each xml file.不幸的是,我只有每个 xml 文件的第一个播放器。 Where is my error and how to correct it ?
我的错误在哪里以及如何纠正?
Thanks for your answers.感谢您的回答。
my xml file has these structure (full structure below, in my model) :我的 xml 文件具有以下结构(下面的完整结构,在我的模型中):
<playerslist>
<player>
<name>John Doe</name>
<country>ENG</country>
<rating>1850</rating>
</player>
<player>
<name>Johnny Depp</name>
<country>USA</country>
<rating>1765</rating>
</player>
<playerslist>
My C# code :我的 C# 代码:
if (Directory.Exists(sourceFolderPath))
{
DirectoryInfo dirSource = new DirectoryInfo(sourceFolderPath);
var allStandardFiles = dirSource.GetFiles("*standard*", SearchOption.AllDirectories).ToList();
List<Playerslist> listAllEntriesStandard = new List<Playerslist>();
foreach (var nextFile in allStandardFiles)
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(Playerslist));
using (TextReader reader = new StringReader(System.IO.File.ReadAllText(nextFile.FullName)))
{
Playerslist result = (Playerslist)serializer.Deserialize(reader);
listAllEntriesStandard.Add(result);
}
}
catch (Exception ex)
{
}
}
}
and my model :和我的模型:
public class PlayerXML
{
public class Player
{
[XmlElement(ElementName = "fideid", Namespace = "")]
public int FideId { get; set; }
[XmlElement(ElementName = "name", Namespace = "")]
public string Name { get; set; }
[XmlElement(ElementName = "country", Namespace = "")]
public string Country { get; set; }
[XmlElement(ElementName = "sex", Namespace = "")]
public string Sex { get; set; }
[XmlElement(ElementName = "title", Namespace = "")]
public string Title { get; set; }
[XmlElement(ElementName = "w_title", Namespace = "")]
public string W_Title { get; set; }
[XmlElement(ElementName = "o_title", Namespace = "")]
public string O_Title { get; set; }
[XmlElement(ElementName = "foa_title", Namespace = "")]
public string Foa_Title { get; set; }
[XmlElement(ElementName = "rating", Namespace = "")]
public int Rating { get; set; }
[XmlElement(ElementName = "games", Namespace = "")]
public int Games { get; set; }
[XmlElement(ElementName = "k", Namespace = "")]
public int K_Factor { get; set; }
[XmlElement(ElementName = "birthday", Namespace = "")]
public int Birthday { get; set; }
[XmlElement(ElementName = "flag", Namespace = "")]
public string Flag { get; set; }
}
[XmlRoot(ElementName = "playerslist", Namespace = "")]
public class Playerslist
{
[XmlElement(ElementName = "player", Namespace = "")]
public Player Player { get; set; }
}
}
public class Serializer
{
public static T DeserializeObject<T>(string deserializedObject)
{
var serializer = new XmlSerializer(typeof(T));
var reader = new StringReader(deserializedObject.Replace("�", "").Replace("encoding =\"utf-16\"", ""));
return (T)serializer.Deserialize(reader);
}
public static string SerializeObject<T>(T obj)
{
XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
StringWriter sw = new StringWriter();
xmlSerializer.Serialize(sw, obj);
return sw.ToString();
}
}
You should import System.IO and System.Xml.Serialization您应该导入 System.IO 和 System.Xml.Serialization
And this my objects这是我的对象
[Serializable]
public class MyObj
{
public int Id { get; set; }
public string Name { get; set; }
public string ReferenceId { get; set; }
}
[Serializable]
public class MyAnotherObj
{
public int Id { get; set; }
public MyObj Obj { get; set; }
}
And I use我用
var myObj = new MyAnotherObj();
//Set myObj
var serializeObj = Serializer.SerializeObject(myObj);
var deserializeObj = Serializer.DeserializeObject<MyAnotherObj>(serializeObj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.