Restsharp - 尝试在根节点上序列化xmlns属性时出错

时间:2015-04-02 19:07:31

标签: c# xml-serialization restsharp

尝试使用在根节点上包含xmlns属性的RestSharp将对象序列化为XML时,我收到以下异常:

前缀''不能从''重新定义到' https://someurl.com'在同一个开始元素标记内。

我尝试序列化的对象只包含一个属性(现在),XmlNamespace:

[SerializeAs(Name = "root")]
public class Root
{
    [SerializeAs(Name = "xmlns", Attribute = true)] 
    public String XmlNamespace { get; set; }
}

尝试将我的对象添加到请求主体时发生异常,如下所示:

Root requestBody = new Root();

requestBody.XmlNamespace = "https://someurl.com";

var request = new RestRequest();

request.Method = Method.POST;
request.Resource = "orders";
request.RequestFormat = DataFormat.Xml;

request.AddBody(requestBody); // exception occurs here

我尝试过使用RestRequest的XmlNamespace属性以及为RestRequest实例化一个新的XmlSerializer,但是这两个都没有根据我尝试的API的要求将命名空间附加到根节点访问。有没有人碰巧知道如何在RestSharp中正确序列化xmlns属性?

1 个答案:

答案 0 :(得分:3)

我找到了答案。看起来我在请求和XmlSerializer级别存在XmlNamespace属性而被抛弃了。对于遇到此问题的任何其他人,修复是在调用AddBody方法时定义命名空间,如下所示:

request.AddBody(requestBody, "https://someurl.com");