通过 C#_List of objects 中的 XElement 的属性
Attributes via XElement in C#_List of objects
我有一个 class "WsReferenceValue" 包含其他 class "Characteristic" 的列表,并且 class 特征有一个 属性另一个 class "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>
我该如何解决?谢谢
实际上是为了解决我的问题:我修改了概念:首先我不使用 XMLSerializer,我只使用 DataContractSerializer 所以我删除了定义 Class,然后我将列表 xelement 添加到一个 xelement ,我得到了我的结果,
我的 WsReferenceValue class:
[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>
我有一个 class "WsReferenceValue" 包含其他 class "Characteristic" 的列表,并且 class 特征有一个 属性另一个 class "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>
我该如何解决?谢谢
实际上是为了解决我的问题:我修改了概念:首先我不使用 XMLSerializer,我只使用 DataContractSerializer 所以我删除了定义 Class,然后我将列表 xelement 添加到一个 xelement ,我得到了我的结果,
我的 WsReferenceValue class:
[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>