И здесь я столкнулся с проблемой.
(во избежание нарушения NDA приведу вымышленный пример xml )
Вот какой целевой XML-файл я должен получить:
Код: Выделить всё
John Doe
123 Main St
Код: Выделить всё
[XmlRoot(Namespace = "example_namespace", ElementName = "myObject", IsNullable = true)]
public class MyObject
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("details", Namespace = "randomNamespace")]
public Details Details { get; set; }
}
public class Details
{
[XmlElement("address")]
public string Address { get; set; }
[XmlAttribute(AttributeName = "tns", Namespace = "http://www.w3.org/2000/xmlns/")]
public string Tns { get; set; } = "randomNamespace";
}
Код: Выделить всё
John Doe
123 Main St
Для элемента «Адрес» я попытался добавить «Form = XmlSchemaForm» .Unqualified":
Код: Выделить всё
[XmlElement("address", Form = XmlSchemaForm.Unqualified)]
public string Address { get; set; }
Код: Выделить всё
John Doe
123 Main St
Код: Выделить всё
var myObject = new MyObject
{
Name = "John Doe",
Details = new Details { Address = "123 Main St" }
};
var serializer = new XmlSerializer(typeof(MyObject));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, myObject);
Console.WriteLine(writer.ToString());
}
Пока единственный вариант — сериализовать в строку, а затем избавиться от злополучного xmlns="" с помощью метода replace, но это очень некрасиво.
Я читал, что, например, можно переопределить сам сериализатор, но не придумал, чем мне это поможет, да и такой вариант повлияет на все классы при сериализации, не так ли?
Не могли бы вы дать мне подсказку?
Подробнее здесь: https://stackoverflow.com/questions/790 ... mpty-xmlns
Мобильная версия