【发布时间】:2015-05-21 04:39:08
【问题描述】:
我需要准确地生成以下 XML。请注意,每个输入元素必须是字符串或布尔值。
<Userdata version="1.00">
<ISKeyValueList>
<Item type="String" key="AgeOfDependents">8,6,1<Item/>
<Item type="Boolean" key="SecuritiesInPosession"> True </Item>
<Item type="Boolean" key="SecuritiesOwners"> True </item>
</ISKeyValueList>
</Userdata>
除了输入元素之外,我可以正确生成上述大部分 XML。我当前的方法生成以下内容:
<Item type="String" key="AgeOfDependents"/>
如您所见,Item 元素不包含文本值 8,6,1。
我目前正在使用以下方法对数据进行序列化:
对象模型
public class finClient
{
[XmlAttribute("version")]
public string version = "1.00";
public UserData Userdata;
}
public class UserData
{
[XmlAttribute("version")]
public string version = "1.00";
public List<Item> ISKeyValueList;
}
public class Item
{
[XmlAttribute("type")]
public string type;
[XmlAttribute("key")]
public string key;
}
C#
以下是我如何构造稍后序列化为 XML 的对象
Userdata = new UserData()
{
ISKeyValueList = new List<Item>()
{
new Item()
{
type = "String", key = "AgeOfDependents"
}
}
}
我知道向对象模型中的 Item 对象添加另一个元素(例如 Value)将允许我存储这些值,但这会将另一个元素添加到 XML 中,这无济于事,因为 XML 需要完全相同如最顶部所示。
我对这个问题的研究使我相信我需要使用字典。我认为我需要字典是否正确?如果是这样,我该如何通过对象模型序列化字典。
非常感谢任何可以提供帮助的人。
【问题讨论】:
-
请提供可靠地重现问题的a good, minimal, complete code example。请注意,尽管这个问题表面上是关于 XML 序列化的,但您并没有显示任何实际序列化任何数据的代码!此外,您的代码示例中没有任何内容表明存在任何文本或其他读取“8,6,1”的值。为什么会您希望它出现在 XML 中?
-
这就是我要添加的内容。我没有提供序列化数据的代码,因为该代码没有问题。问题在于对象模型。
-
所以你不在乎内存中的对象类型是什么样的?那么我会说已经给出的答案就足够了。如果没有,那么显然您的问题中遗漏了一些细节。
标签: c# xml dictionary xml-serialization object-model