首页 > 解决方案 > C#_List of objects 中通过 XElement 的属性

问题描述

我有一个类“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>

我该如何解决?谢谢

标签: c#xmlwcfserialization

解决方案


实际上要解决我的问题:我修改了概念:首先我不使用 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>   

推荐阅读