我正在设置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)。