我可以生成以下XML文档,但是我遇到了'ISKeyValueList'元素上的version属性问题。我正在使用xmlSerializer。我应该注意,这个XML被传递给API,这需要具体的结构如下。
<Userdata>
<ISKeyValueList version="1.00">
<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>
我已经阅读了几个堆栈溢出赏金,我从中了解到要将list属性添加到列表中,我必须将列表移动到另一个类中。以下内容生成上面的结构,但是它添加了一个我想避免的额外元素。
C#
UserData newUserData = new UserData();
newUserData.ISKeyValueList = new DataProperties();
newUserData.ISKeyValueList.Items = new List<Item>()
{
new Item()
{
Type = "String",
Key = "AgeOfDependents",
//Add data from form
Value = string.Join(",", application.applicants[0].ageOfDependants)
},
new Item(){ Type = "Boolean", Key = "SecuritiesInPossession", Value = "True" }
};
newClientDetails.UserData = newUserData;
//Pass object to serializer here
模型
public class UserData
{
public DataProperties ISKeyValueList { get; set; }
}
public class DataProperties
{
[XmlAttribute("version")]
public string Version { get; set; }
public List<Item> Items { get; set; }
public DataProperties()
{
Version = "1.00";
}
}
public class Item
{
[XmlAttribute("type")]
public string Type { get; set; }
[XmlAttribute("key")]
public string Key { get; set; }
[XmlText]
public string Value { get; set; }
}
当前输出
但是,这会在XML文档中添加额外的,不需要的元素(上面突出显示)。有没有办法可以通过配置模型来删除这个额外的元素,因为我宁愿避免设置自定义序列化器等。
答案 0 :(得分:2)
将属性[XmlElement("Item")]
添加到您的DataProperties.Items
媒体资源。