C#_List of objects 中通过 XElement 的属性
Posted
技术标签:
【中文标题】C#_List of objects 中通过 XElement 的属性【英文标题】:Attributes via XElement in C#_List of objects 【发布时间】:2020-03-09 08:06:16 【问题描述】:我有一个类“WsReferenceValue”,其中包含其他类“Characteristic”的列表,并且该类 Characteristic 具有另一个类“Definition”的属性,这是我的代码:
public class WsReferenceValue
[DataContract]
public class WsReferenceValue : WsEntitiesDimension
public List<Characteristic> listCharacteristic get; set;
[DataContract]
public class Characteristic
[DataMember]
public Definition definition get; set;
[Serializable]
public class Definition
[XmlAttribute]
public int id;
[XmlAttribute]
public string name;
我的代码:
WsReferenceValue referenceV = new WsReferenceValue();
List<Characteristic> ListFinalDynamic = new List<Characteristic>();
foreach (var finalCharac in listeCharactresticFinal)
var lstChars = new Characteristic()
Definition = new Definition()
id = Dimension.ID,
name = Dimension.Name
;
ListFinalDynamic.Add(lstChars);
referenceV.listCharacteristic = ListFinalDynamic;
我得到了这个结果:
<WsReferenceValue>
<listCharacteristic>
<Characteristic>
<Definition>
<id>1</id>
<name>COMPANY</name>
</Definition>
</Characteristic>
<Characteristic>
<Definition>
<id>71</id>
<name>COUNTRY</name>
</Definition>
</Characteristic>
<Characteristic>
<Definition>
<id>45</id>
<name>CURRENCY</name>
</Definition>
</Characteristic>
</listCharacteristic>
我的目标是使用这种格式获取一个参考的所有特征列表:(每个具有属性的特征)
<WsReferenceValue>
<listCharacteristic>
<Characteristic>
<Definition id=1 name="COMPANY" />
</Characteristic>
<Characteristic>
<Definition id=71 name="COUNTRY" />
</Characteristic>
<Characteristic>
<Definition id=45 name="CURRENCY" />
</Characteristic>
</listCharacteristic>
我该如何解决?谢谢
【问题讨论】:
参考这个***.com/questions/45270479/… 感谢@JayakumarThangavel 的回复,但还是不太清楚,因为和我的objectif不同 如何序列化为 XML?您的 c# 数据模型混合了XmlSerializer
属性和数据协定属性,因此不清楚
@dbc 我没有序列化,我没有为序列化做任何事情。 WCF 运行时正在为我序列化结果
那么你可能想要DataContract XML serialization and XML attributes。 WCF 默认使用不支持 XML 属性的数据契约序列化程序,因此您需要通过将 [XmlSerializerFormat]
应用于您的服务或操作契约来切换到 XmlSerializer
。如果您要分享minimal reproducible example,显示我们可以肯定地说的服务和运营合同。
【参考方案1】:
实际上是为了解决我的问题:我修改了概念:首先我不使用 XMLSerializer,我只使用 DataContractSerializer,所以我删除了定义类,然后我将列表 xelement 添加到一个 xelement 中,我得到了我的结果,
我的 WsReferenceValue 类:
[DataContract]
public class WsReferenceValue : WsEntitiesDimension
[DataMember]
public XElement listCharacteristic get ; set;
实现:
WsReferenceValue referenceV = new WsReferenceValue();
foreach (var finalCharac in listeCharactresticFinal)
var XelementTemp = new XElement("ReferenceValue",
new XAttribute("Name", refVal.Name),
new XAttribute("Id", refVal.ID));
referenceV.listCharacteristic.Add(XelementTemp);
我得到了我想要的结果:
<listCharacteristic>
<ReferenceValues xmlns="">
<ReferenceValue Name="CC" Id="1" />
<ReferenceValue Name="S9999" Id="4" "0"/>
<ReferenceValue Name="EE45" Id="5" />
</ReferenceValues>
</listCharacteristic>
【讨论】:
以上是关于C#_List of objects 中通过 XElement 的属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective C中通过UIView获取UIAlertController?
Python(3.8):map(lambda x:x.method(),list_of_objects)不起作用[重复]