【发布时间】:2017-06-16 11:49:56
【问题描述】:
我有以下 Employee 类。我需要从这个类生成一个 xml,以便只允许一个属性。它是salary1 或salary2。
如果从数据库中得到的salary1大于Salary2,则生成的XML应该只包含salary1 XMLElement,并且生成的XML中应该没有salary2 XML元素
现在我在生成的 XML 中获取了这两个元素。
如果从数据库中得到的salary2大于Salary1,则生成的XML应该只包含salary2 XMLElement,并且生成的XML中应该没有salary1 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();
}
}
}
【问题讨论】:
-
要只获得一份薪水,请创建一个基类 Salary 并继承两个类 Salary1 和 Salary2。然后将 DataBase 中的属性设为基类 Salary,它将接受 Salary1 或 Salary2。
-
为什么您没有一个 Salary 属性并使用符合条件的正确值对其进行初始化?
标签: c# xml xsd xsd-validation