How do I set a namespace prefix to an XAttribute in .NET?
Specify the namespace when you create the 'encodingStyle' XAttribute (by using ns + "encodingStyle"
):
XAttribute encoding = new XAttribute(ns + "encodingStyle", "http://www.w3.org/2001/12/soap-encoding");
The two-parameter XAttribute constructor takes an XName
as the first argument. This can either be constructed implicitly from a string
(as in the code in your question), or directly by "adding" a string
to an XNamespace
to create an XName
(as above).
You need to combine the XName of your XAttribute with an XNamespace. I know right... Anyhow try this.
XNamespace soap = "http://www.w3.org/2001/12/soap-envelope";
XAttribute encoding = new XAttribute(soap + "encodingStyle",
"http://www.w3.org/2001/12/soap-encoding");