在没有额外元素的情况下序列化列表
Serialize List Without an Extra Element
我可以生成以下 XML 文档,但是我在“ISKeyValueList”元素的版本属性方面遇到了问题。我正在使用 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>
我已经阅读了几个堆栈溢出赏金,从中我了解到要将版本属性添加到列表中,我必须将列表移动到另一个 class。下面生成上面的结构,但是它添加了一个我想避免的额外元素。
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 文档添加额外的、不需要的元素(上面突出显示的)。有没有一种方法可以通过配置模型来删除这个额外的元素,因为我宁愿避免设置自定义序列化程序等。
将属性 [XmlElement("Item")]
添加到您的 DataProperties.Items
属性。
我可以生成以下 XML 文档,但是我在“ISKeyValueList”元素的版本属性方面遇到了问题。我正在使用 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>
我已经阅读了几个堆栈溢出赏金,从中我了解到要将版本属性添加到列表中,我必须将列表移动到另一个 class。下面生成上面的结构,但是它添加了一个我想避免的额外元素。
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 文档添加额外的、不需要的元素(上面突出显示的)。有没有一种方法可以通过配置模型来删除这个额外的元素,因为我宁愿避免设置自定义序列化程序等。
将属性 [XmlElement("Item")]
添加到您的 DataProperties.Items
属性。