@AleDv

Как задать собственные namespace'ы для дочерних элементов при сериализации в XML?

Всем привет. У меня стоит задача сформировать несколько SOAP запросов. Для того, чтобы получить структуры в XML я пишу класс под каждый запрос. В каждом запросе есть свой элемент Header со своим namespace. Header для каждого запроса состоит из одинаковых полей, но namespace зависят от запроса.

Например, запросы:

public class Request {
    [XmlElement(ElementName = "Header", Namespace = "http://example1.com")]
    public Header HeaderRequest;

}

public class AnotherRequest {
    [XmlElement(ElementName = "Header", Namespace = "http://site.com")]
    public Header HeaderRequest;
}


Сам класс Header имеет такую структуру:

public class Header {
    [XmlElement(ElementName = "Sender")]
    public string Sender;
	
	[XmlElement(ElementName = "Reciever")]
    public string Reciever;
}


При этом, мне нужно использовать разные namespace внутри Header в завивимости от запроса, например для Request внутри Header должен быть префикс v11="example1.com/v11", а для AnotherRequest внутри Header должен быть префикс v22="site.com/v22", чтобы получить примерно такие XML на выходе:

<Request>
	<v1:Header>
		<v11:Sender />
		<v11:Reciever />
	</v1:Header>
</Request>


и

<AnotherRequest>
	<v2:Header>
		<v22:Sender />
		<v22:Reciever />
	</v2:Header>
</AnotherRequest>


Я могу так сделать, если для каждого запроса писать свой собственный Header, где для каждого элемента прописывать свои пространства имён, но тогда получается куча дублированного кода, если число запросов будет постоянно расти, поэтому хотелось бы использовать один Header и каким-то образом управлять пространствами имен для его дочерних элементов.

В c# я не силён, возможно, я что-то упускаю. Прощения прощения за сумбурность.

UPD. Поправил ожидаемый XML, писал вечером, видимо совсем поплыл. Прощу прощения.
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы