2017-06-16 74 views
0

我有下面的Employee类。我需要从这个类中生成一个xml,这样One属性才被允许。它可能是薪水1或薪水2。用C#XML生成选择节点

如果salary1从数据库得到的是比Salary2越大,生成的XML应该只包含salary1的XMLElement和salary2 XML Elment应在生成的XML

现在,我得到生成的XML元素都缺席。

如果从数据库获得的salary2大于Salary1,则生成的XML应该只包含salary2 XMLElement和salary1 XML Elment应该在生成的XML中不存在。

我试过使用选择标识符,我无法理解它。

公共类节目 {

public class Employee 
    { 

     public int Salary1 { get; set; } 
     public int Salary2 { get; set; } 

    } 

     public static class Database 
     { 
      public static int Salary1 = 100; 
      public static int Salary2= 50; 
     } 

    public static void Main(string[] args) 
    { 

     XmlSerializer xsSubmit = new XmlSerializer(typeof(Employee)); 

     Employee subReq; 
     if (Database.Salary1 > Database.Salary2) 
     { 
      subReq = new Employee { Salary1 = Database.Salary1 }; 
     } 
     else 
     { 
      subReq = new Employee { Salary2 = Database.Salary2 }; 
     } 
     var xml = ""; 

     using (var sww = new StringWriter()) 
     { 
      using (XmlWriter writer = XmlWriter.Create(sww)) 
      { 
       xsSubmit.Serialize(writer, subReq); 
       xml = sww.ToString(); // Your XML 
      } 
     } 

     Console.WriteLine(xml); 
     Console.ReadLine(); 

    } 
} 

}

+0

要获得唯一一个工资做出了一个基类薪酬有两个继承的类Salary1和Salary2有一个单一的财产如薪酬一段reasons.Changing数据类型。然后使DataBase中的属性成为Salary1或Salary2的基类Salary。 – jdweng

+0

为什么你没有一个Salary属性,并用符合标准的正确值初始化它? –

回答

0

谢谢你们的回答和指导。但我的情况我不能诠释为String解决问题

public static class Program 
{ 

    public class Employee 
    { 

     public string Salary1 { get; set; } 


     public string Salary2 { get; set; } 





    } 

    public static class Database 
    { 
     public static int? Salary1 = 100; 
     public static int? Salary2 = 50; 
    } 

    public static void Main(string[] args) 
    { 

     XmlSerializer xsSubmit = new XmlSerializer(typeof(Employee)); 

     Employee subReq; 
     if (Database.Salary1 > Database.Salary2) 
     { 
      subReq = new Employee { Salary1 = Database.Salary1.ToString() }; 
     } 
     else 
     { 
      subReq = new Employee { Salary2 = Database.Salary2.ToString() }; 
     } 
     var xml = ""; 

     using (var sww = new StringWriter()) 
     { 
      using (XmlWriter writer = XmlWriter.Create(sww)) 
      { 
       xsSubmit.Serialize(writer, subReq); 
       xml = sww.ToString(); // Your XML 
      } 
     } 

     Console.WriteLine(xml); 
     Console.ReadLine(); 

    } 

} 
0

试试这个:

public class Employee 
{ 
    private int salary; 

    [XmlIgnore] 
    public int Salary1 { get; set; } 

    [XmlIgnore] 
    public int Salary2 { get; set; } 

    [XmlAttribute(AttributeName = "Salary")] 
    public int SalaryToSerialize 
    { 
     get 
     { 
      salary = Math.Max(this.Salary1, this.Salary2); 
      return salary; 
     } 
     set 
     { 
      salary = value; 
     }  
    } 
} 

和序列化对象,因为它是。

希望它能帮助你。