我是C#,Silverlight 5和XAML初学者的新手。我正在开发一个VS-2012项目,我不必使用任何CycleClip Board Ring来完成这项任务。我的VS项目中有一个XML文件。假设文件如下:
FileName is FileXml.xml
<?xml version="1.0" encoding="utf-8" ?>
<parameter>
<name>mounts</name>
<unit></unit>
<component>
<type>List</type>
<attributes>
<type>Integer</type>
<displayed>4</displayed>
<add_remove>yes</add_remove>
<item>25</item>
</attributes>
<attributes>
<ccypair>XAUUSD</ccypair>
<item>100</item>
</attributes>
</component >
</parameter>
我必须解析这个XML文件,并且必须在C#中创建对象。所以我可以使用&#34; bands_amounts&#34; (名称)和通过这些对象访问的所有其他元素。如何使用C#代码执行此操作?
答案 0 :(得分:2)
您将需要使用某种反序列化。以下是我不久前实施的一个示例:
public static class Serialization<T> where T : class
{
public static T DeserializeFromXmlFile(string fileName)
{
if (!File.Exists(fileName))
{
return null;
}
DataContractSerializer deserializer = new DataContractSerializer(typeof(T));
using (Stream stream = File.OpenRead(fileName))
{
return (T)deserializer.ReadObject(stream);
}
}
}
然后打电话给你,你会做这样的事情:
Serialization<YourCustomObject>.DeserializeFromXmlFile(yourFileNameOrPath);
请记住,您必须拥有与要反序列化的XML对应的类。 (又称变成了一个对象)。
你的课程看起来像这样:
[Serializable]
class parameter
{
[Datamember]
public string name {get; set;}
[Datamember]
public string label {get; set;}
[Datamember]
public string unit {get; set;}
[Datamember]
public component thisComponent {get; set;}
}
[Serializable]
class component
{
[Datamember]
public string type {get; set;}
[Datamember]
public List<attribute> attributes {get; set;}
}
[Serializable]
class attribute
{
[Datamember]
public string? type {get; set;}
[Datamember]
public string? displayed {get; set;}
[Datamember]
public string? add_remove {get; set;}
[Datamember]
public string? ccypair {get; set;}
[Datamember]
public List<int> item { get; set;}
}