2015-04-02 2 views
1

При попытке сериализовать объект в XML с помощью RestSharp, который содержит атрибут, XMLNS на корневом узле, я получаю следующее исключение:Restsharp - Ошибка при попытке сериализации атрибут XMLNS на корневой узел

Префикс «» не может переопределяться от '' до '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 

Я попытался использовать XMLNamespace свойство RestRequest, а также инстанцировании новый XmlSerializer для RestRequest, но ни один из них приложил пространство имен для корневого узла в соответствии с требованиями API я пытающимся доступ , Кто-нибудь знает, как правильно сериализовать атрибут xmlns в RestSharp?

+0

Вы должны использовать пространство имен при создании элементов, вы не можете просто добавить к корню и измените пространство имен элементов. – joemfb

ответ

2

Я наткнулся на обнаружение ответа. Похоже, я был отброшен наличием свойств XmlNamespace на уровне запросов и XmlSerializer. Для кого-то еще, что работает в этом вопросе, исправление было определить пространство имен при вызове метода AddBody следующим образом:

request.AddBody(requestBody, "https://someurl.com"); 
Смежные вопросы