Чтобы установить пространство имен атрибута, вам нужно использовать свойство Namespace
, равное XmlAttributeAttribute
.
Если особенно важно, чтобы префикс, используемый для этого пространства имен, был «x», то вы можете управлять этим, используя класс XmlSerializerNamespaces
при выполнении сериализации, опционально с помощью XmlNamespaceDeclarationsAttribute
.
Вот рабочий пример:
[XmlRoot(Namespace = "http://foo")]
public class MyClass
{
private XmlSerializerNamespaces xmlns;
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces Xmlns
{
get
{
if (xmlns == null)
{
xmlns = new XmlSerializerNamespaces();
xmlns.Add("x", "http://xxx");
}
return xmlns;
}
set { xmlns = value; }
}
[XmlAttribute("uid", Namespace = "http://xxx")]
public int Uid { get; set; }
}
class Program
{
static void Main(string[] args)
{
var s = new XmlSerializer(typeof(MyClass));
s.Serialize(Console.Out, new MyClass { Uid = 123 });
Console.ReadLine();
}
}
Который производит:
<?xml version="1.0" encoding="ibm850"?>
<MyClass
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:x="http://xxx"
x:uid="123"
xmlns="http://foo"/>