C#中同一对象上的多个XML serilizations

时间:2014-04-02 22:39:25

标签: c# xml xslt serialization xml-serialization

我有Prospect和联系课程。我需要在2个差异格式的2个差异处使用序列化的前景。第一种格式是使用XML Serialization的API方法实现的。对于第二个,我必须显示编辑器的前景,它有diff模式。所有属性都显示为独立元素,如XML下面。

格式#1

    <prospect>
    <ID>1</ID>
    <REPNAME>TEST</REPNAME>
    <contact> 
        <FNAME>TEST-FNAME</FNAME>
        <LNAME>TEST-LNAME</LNAME>
    </contact>
</prospect>

格式#2

    <prospect>
    <Elemant Name="ID" value="1" />
    <Element Name="REPNAME" value="TEST" />
    <contact>
        <Element Name="FNAME" value="TEST-FNAME" />
        <Element Name="LNAME" value="TEST-LNAME" />
    </contact>
</prospect>

[XmlElement(Prospect)]
public class prospect 
{
   private string id, repName;
   private contact c;


     [xmlElement(PID)]
     public string ID {}

     [xmlElement(RepresentName)]
     public string REPNAME {}
}

[XmlElement(Contact)]
public contact Con
{
     private string fname,lname;
     [xmlElement(FirstName)]
     public string FNAME {}

     [xmlElement(LastName)]
     public string LNAME {}
}

我的问题是 - 通过添加元素(可自由选择的)类型Prospect&amp;联系类,我可以实现2种不同格式的序列化XML吗?我需要做什么?我应该能够在2种格式之间进行转换。我不想添加新的数据对象集来实现2种格式。如果我写了一个xml自定义seriliazer,那么在所有这些选项中最好的选择。

1 个答案:

答案 0 :(得分:0)

您必须为两种不同的血清化编写自定义序列化程序。如果要仅在一个类中序列化所有类,可以编写一个通用的serilization类。为此,您可以在System.Xml.Serilization命名空间中使用XmlSerializer类。

示例代码:

XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.Serialize(writer, obj);

有关更多信息和示例:

http://csharpexamples.com/c-generic-xml-serilization/