序列化和反序列化XML,相同的根节点,不同的内容

时间:2017-11-23 14:57:09

标签: xml web-services asp.net-mvc-4 serialization xml-deserialization

我正在设置Web服务,客户端已指定请求和响应格式(XML)。问题是它们都具有相同的根节点,但内容各不相同。我一直在搜索,但无法找到任何兼顾两种方式的解决方案。我对此不熟悉并没有帮助。

一些例子(共有大约10个,都有相同的根。)

请求:

<?xml version="1.0" encoding="UTF-8" ?>
<message id="123" company="CompanyA">
    <query>
        <product>someProduct</product>
        <dateFrom>2012-01-01</dateFrom>
        <dateTo>2012-01-10</dateTo> 
        <status>10</status> 
    </query>
</message>

<?xml version="1.0" encoding="UTF-8" ?>
<message id="456" company="CompanyB">
    <query>
        <price>99.95</price>
        <quantity>50</quantity> 
    </query>
</message>

响应:

<message Id="789" company="CompanyC">
    <file>
        <fileName>abc123.pdf</fileName>
        <data>LLSHDFLJHSJKLDFHJLKS</data>           
    </file>
</message>

我创建了不同的对象来反序列化并使用XmlRoot设置名称,但除非我也使用命名空间,否则会出现冲突。这有什么简单的方法吗?最接近的解决方案是使用XmlRoot和命名空间重命名,但客户端不需要命名空间。

[DataContract, XmlRoot("message")]
public class Message
{
   [DataMember, XmlAttribute]
   public string id { get; set; }
   [DataMember, XmlAttribute]
   public string company { get; set; }
}

public class ExtendedMessage:Message
{
   [DataMember, XmlElement]
   public string whantEver { get; set; }       
}

public class ExtendedMessage2:Message
{
   [DataMember, XmlElement]
   public int someNumber { get; set; }       
}

我正在使用C#(ASP.NET MVC 4)。

0 个答案:

没有答案