Трябва да прочета xml документ от запис в база данни в обект XDocument, за да бъде десериализиран. За да работи десериализацията, трябва да приложа конкретно пространство от имена към всеки от елементите от ниво 1. И така XML изглежда малко по следния начин:
<Itinerary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Segments>
<SegmentFlight>
</SegmentFlight>
<!-- more child elements -->
</Segments>
<References>
<!-- child elements -->
</References>
<Fares>
<!-- child elements -->
</Fares>
</Itinerary>
И трябва да изглежда така:
<Itinerary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Segments xmlns="http://myurl">
<SegmentFlight>
</SegmentFlight>
<!-- more child elements -->
</Segments>
<References xmlns="http://myurl">
<!-- child elements -->
</References>
<Fares xmlns="http://myurl">
<!-- child elements -->
</Fares>
</Itinerary>
Но когато стартирам следния код, за да приложа пространството от имена към всеки от елементите от най-високо ниво в рамките на възела на маршрута:
Dim xmlDoc As XDocument = XDocument.Load(New System.IO.StringReader(xmlStringFromDB))
Dim ns As XNamespace = "http://myurl"
For Each elem In xmlDoc.Descendants("Itinerary").Elements
elem.Name = ns + elem.Name.LocalName
Next
Получавам празен атрибут на пространство от имена xmln="" на всеки дъщерен елемент в този елемент, което води до неуспех на десериализацията:
<Itinerary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Segments xmlns="http://myurl">
<SegmentFlight xmlns="">
<!-- etc ... -->
</Segments>
Как да предотвратя добавянето на празно/празно пространство от имена към всеки дъщерен елемент на елемента, към който е приложено необходимото пространство от имена?