2017-06-16 73 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; 
     }  
    } 
} 

和序列化對象,因爲它是。

希望它能幫助你。