API-интерфейс я хочу использовать требует, чтобы я так установить xmlns
атрибута по на вложенном элементе, как это:C# XmlSerializer: Создать атрибут XMLNS на вложенном объекте
<root>
<mainelement>
</mainelement>
<mainelement>
<subelement xmlns="http://example.com/xml" otherAttr="value">
</subelement>
</mainelement>
</root>
Класс subelement
определяется так :
public class subelement
{
[XmlAttribute]
public string otherAttr { get; set; }
[XmlAttribute]
public string xmlns { get; set; } = "http://example.com/xml";
}
Однако, когда я пытаюсь сериализации корневого объекта с XmlSerializer xmlns
всегда атрибут по недостающее. В противном случае он работает нормально. Когда я переименую этот атрибут, он создал, поэтому я думаю, что это имеет какое-то отношение к xmlns
как зарезервированное ключевое слово.
Также я не могу использовать стандартный способ установки пространств имен в качестве третьего параметра метода Serialize
, потому что я просто хочу, чтобы этот атрибут находился на объекте subelement
.
Есть ли способ выполнить это без ручного редактирования файла после сериализации?
Это необходимо решить, просто установив [пространство имен] (https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.namespace (v = vs.110) .aspx) в 'subeclement' [XmlElementAttribute] (https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute (v = vs.110) .aspx) – Filburt