Если вы не можете избавиться от дополнительных атрибутов xmlns для каждого элемента, при сериализации в xml из сгенерированных классов (например: когда использовался xsd.exe ), то у вас есть что-то вроде:
<manyElementWith xmlns="urn:names:specification:schema:xsd:one" />
тогда я поделюсь с вами тем, что сработало для меня (смесь предыдущих ответов и что я нашел здесь )
явно установите все ваши различные xmlns следующим образом:
Dim xmlns = New XmlSerializerNamespaces()
xmlns.Add("one", "urn:names:specification:schema:xsd:one")
xmlns.Add("two", "urn:names:specification:schema:xsd:two")
xmlns.Add("three", "urn:names:specification:schema:xsd:three")
затем передайте его в сериализацию
serializer.Serialize(writer, object, xmlns);
у вас будут три пространства имен, объявленные в корневом элементе, и вам больше не нужно будет генерироваться в других элементах, которые будут иметь префикс соответственно
<root xmlns:one="urn:names:specification:schema:xsd:one" ... />
<one:Element />
<two:ElementFromAnotherNameSpace /> ...