Restsharp - ошибка при попытке сериализации атрибута xmlns на корневом узле

1

При попытке сериализации объекта в XML с помощью 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
    Вам необходимо использовать пространство имен при создании элементов, вы не можете просто добавить к корню и изменить пространство имен элемента.
Теги:
restsharp
xml-serialization

1 ответ

2
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню