首页 / C# / C#序列化从结果中删除属性名称
C#序列化从结果中删除属性名称
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#序列化从结果中删除属性名称,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3017字,纯文字阅读大概需要5分钟。
内容图文
我无法从我的xml中删除clsProduct中的属性值的名称.我尝试对列表< clsValues>使用[XmlElement(ElementName =“ Values”,Type = typeof(clsValues)],但它没有给我我想要的结果.
您可以在下面看到我需要的结果.
我的序列化课程的一部分:
[Serializable]
public class clsProduct
{
[XmlAttribute("ID")]
public string ID { get; set; }
[XmlAttribute("UserTypeID")]
public string UserTypeID { get; set; }
[XmlArrayItem(ElementName = "Values", Type = typeof(clsValues))]
public List<clsValues> Values { get; set; }
}
[Serializable]
public class clsValues
{
[XmlElement(ElementName = "Value")]
public clsValue Value { get; set; }
[XmlArray(ElementName = "MultiValue"),
XmlArrayItem(ElementName = "Value")]
public List<clsValue> MultiValue { get; set; }
}
[Serializable]
public class clsValue
{
[XmlAttribute("AttributeID")]
public string AttributeID { get; set; }
[XmlText]
public string Value { get; set; }
}
我当前的xml结果:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
</Values>
<Values>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
</Values>
<Values>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Values>
</Product>
结果我需要:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Product>
有人可以帮忙吗?
谢谢
编辑:
当我使用
[XmlElement(ElementName =“ Values”,Type = typeof(clsValues))]
公共列表< clsValues>值{get;组; }
而不是XmlArrayItem我得到以下结果:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
</Values>
<Values>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
</Values>
<Values>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Product>
解决方法:
您的问题与此属性有关:
[XmlArrayItem(ElementName = "Values", Type = typeof(clsValues))]
public List<clsValues> Values { get; set; }
这意味着存在多个具有特定类型clsValues的称为Values的元素.并且每个都具有Value或MultiValue子项中的一个或两个.
您想要的是将数组作为元素值,并使数组项成为您在两种不同元素类型之间的选择-它要么包含Value元素,要么包含MultiValue元素.
您可以这样构造:
public class Product
{
[XmlAttribute("ID")]
public string Id { get; set; }
[XmlAttribute("UserTypeID")]
public string UserTypeId { get; set; }
[XmlArray("Values")]
[XmlArrayItem("Value", typeof(Value))]
[XmlArrayItem("MultiValue", typeof(MultiValue))]
public List<object> Values { get; set; }
}
public class MultiValue
{
[XmlElement(ElementName = "Value")]
public List<Value> Values { get; set; }
}
public class Value
{
[XmlAttribute("AttributeID")]
public string AttributeId { get; set; }
[XmlText]
public string Text { get; set; }
}
请参阅this fiddle以获取有效的演示.
内容总结
以上是互联网集市为您收集整理的C#序列化从结果中删除属性名称全部内容,希望文章能够帮你解决C#序列化从结果中删除属性名称所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。