gpt4 book ai didi

c# - 如何使用 xml 创建 C# 对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:04 28 4
gpt4 key购买 nike

我是 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# 中创建对象。这样我就可以使用“bands_amounts”(名称)和所有其他通过这些对象访问的元素。如何使用 C# 代码执行此操作?

最佳答案

您将需要使用某种反序列化。这是我不久前实现的一个示例:

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;}
}

关于c# - 如何使用 xml 创建 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369197/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com