gpt4 book ai didi

.net - 将键/值对列表序列化为 XML

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:55 25 4
gpt4 key购买 nike

我有一个键/值对列表,我想在 XML 文件中存储和检索它们。所以这个任务与描述的类似here .我正在尝试遵循标记答案中的建议(使用 KeyValuePairXmlSerializer),但我没有让它工作。

到目前为止,我拥有的是“设置”类......

public class Settings
{
public int simpleValue;
public List<KeyValuePair<string, int>> list;
}

...这个类的一个实例...

Settings aSettings = new Settings();

aSettings.simpleValue = 2;

aSettings.list = new List<KeyValuePair<string, int>>();
aSettings.list.Add(new KeyValuePair<string, int>("m1", 1));
aSettings.list.Add(new KeyValuePair<string, int>("m2", 2));

... 以及将该实例写入 XML 文件的以下代码:

XmlSerializer serializer = new XmlSerializer(typeof(Settings));
TextWriter writer = new StreamWriter("c:\\testfile.xml");
serializer.Serialize(writer, aSettings);
writer.Close();

生成的文件是:

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<simpleValue>2</simpleValue>
<list>
<KeyValuePairOfStringInt32 />
<KeyValuePairOfStringInt32 />
</list>
</Settings>

因此尽管元素数量正确,但我的列表中的键和值都没有存储。显然我做的事情基本上是错误的。我的问题是:

  • 如何在文件中存储列表的键/值对?
  • 如何将列表中元素的默认生成名称“KeyValuePairOfStringInt32”更改为我想要的其他名称,例如“listElement”?

最佳答案

KeyValuePair 不可序列化,因为它具有只读属性。 Here是更多信息(感谢 Thomas Levesque)。要更改生成的名称,请使用 [XmlType] 属性。

像这样定义你自己的:

[Serializable]
[XmlType(TypeName="WhateverNameYouLike")]
public struct KeyValuePair<K, V>
{
public K Key
{ get; set; }

public V Value
{ get; set; }
}

关于.net - 将键/值对列表序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658916/

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