{"record":{"id":"5414cdadc045c632","repo":"restsharp/RestSharp","slug":"supplied-parameter-is-not-an-xml-parameter","errorCode":null,"errorMessage":"Supplied parameter is not an XML parameter","messagePattern":"Supplied parameter is not an XML parameter","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/RestSharp/Serializers/Xml/XmlRestSerializer.cs","lineNumber":32,"sourceCode":"\nnamespace RestSharp.Serializers.Xml;\n\npublic class XmlRestSerializer(IXmlSerializer serializer, IXmlDeserializer deserializer) : IRestSerializer {\n    IXmlDeserializer _deserializer = deserializer;\n    IXmlSerializer   _serializer   = serializer;\n\n    public XmlRestSerializer() : this(new DotNetXmlSerializer(), new DotNetXmlDeserializer()) { }\n\n    public ISerializer         Serializer           => _serializer;\n    public IDeserializer       Deserializer         => _deserializer;\n    public string[]            AcceptedContentTypes => ContentType.XmlAccept;\n    public SupportsContentType SupportsContentType  => contentType => contentType.Value.EndsWith(\"xml\", StringComparison.InvariantCultureIgnoreCase);\n\n    public DataFormat DataFormat => DataFormat.Xml;\n\n    public string? Serialize(Parameter parameter) {\n        if (parameter is not XmlParameter xmlParameter)\n            throw new ArgumentException(\"Supplied parameter is not an XML parameter\", nameof(parameter));\n\n        if (parameter.Value == null)\n            throw new ArgumentNullException(nameof(parameter), \"Parameter value is null\");\n\n        var savedNamespace = _serializer.Namespace;\n        _serializer.Namespace = xmlParameter.XmlNamespace ?? savedNamespace;\n\n        var result = _serializer.Serialize(parameter.Value);\n\n        _serializer.Namespace = savedNamespace;\n\n        return result;\n    }\n\n    public XmlRestSerializer WithXmlSerializer(IXmlSerializer xmlSerializer) {\n        _serializer = xmlSerializer;\n        return this;\n    }","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/restsharp/RestSharp/blob/6a5082169257438cd085f822f050d93256a8e499/src/RestSharp/Serializers/Xml/XmlRestSerializer.cs#L14-L50","documentation":"XmlRestSerializer.Serialize throws ArgumentException if the Parameter passed to it is not an XmlParameter. The XML serializer path requires an XmlParameter because it carries the optional XmlNamespace used during serialization; a generic Parameter does not. This guards the serializer against being called with the wrong parameter subtype.","triggerScenarios":"Calling the XML serializer's Serialize(Parameter) with a plain BodyParameter, JsonParameter, or any non-XmlParameter; triggering XML serialization indirectly by adding a non-XML body parameter on a request whose DataFormat.Xml serializer is selected.","commonSituations":"Manually invoking the serializer with a wrong parameter type; mixing AddBody/AddJsonBody parameters into an XML request; custom code that constructs parameters without using XmlParameter for XML bodies.","solutions":["When serializing XML bodies, add them as XmlParameter (or use AddXmlBody, which creates the correct parameter type).","Do not pass a BodyParameter/JsonParameter into XmlRestSerializer.Serialize.","Ensure the request's DataFormat and the body parameter type are consistent (Xml DataFormat -> XmlParameter)."],"exampleFix":"// before\nvar param = new BodyParameter(\"\", obj, ContentType.Xml); // wrong type\nxmlSerializer.Serialize(param); // throws\n\n// after\nvar param = new XmlParameter(obj, \"\", xmlNamespace: null);\nxmlSerializer.Serialize(param);","handlingStrategy":"type-guard","validationCode":"if (parameter is not XmlParameter)\n    throw new ArgumentException($\"Expected XmlParameter, got {parameter.GetType().Name}\", nameof(parameter));\nxmlSerializer.Serialize(parameter);","typeGuard":"static bool IsXmlParameter(Parameter p) => p is XmlParameter;","tryCatchPattern":null,"preventionTips":["Use AddXmlBody which constructs the correct XmlParameter internally.","Never pass BodyParameter/JsonParameter to XmlRestSerializer.Serialize.","Keep DataFormat and parameter subtype consistent per request."],"tags":["xml","serialization","parameters","type-guard","argument"],"backgroundTag":null,"analyzedSha":"6a5082169257438cd085f822f050d93256a8e499","analyzedAt":"2026-08-13T20:38:25.807Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}