Удалить атрибут xmlns с префиксом пространства имен

Этот вопрос является логическим продолжением этого - теперь предположим, что XElement содержит элементы в пространстве имен не по умолчанию:

<Body xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <ReportItems />        
  <Height />
  <rd:Style />
</Body>

Я пытаюсь следовать тому же подходу, который был предложен в ответе на мой предыдущий вопрос, то есть удалить атрибут xmlns, но он не работает, когда это префикс xmlns +, например xmlns:xx.

TL;версия DR

Это работает:

Dim xml = <Body xmlns="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"/>
xml.Attribute("xmlns").Remove()

Это не:

Dim xml = <Body xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"/>
xml.Attribute("xmlns:rd").Remove()

Получение этой ошибки:

XmlException was unhandled
The ':' character, hexadecimal value 0x3A, cannot be included in a name.

Как удалить атрибут xmlns:xx из XElement?


person Neolisk    schedule 28.11.2012    source источник


Ответы (1)


Попробуйте это вместо этого:

xml.Attribute(XNamespace.Get("http://www.w3.org/2000/xmlns/") + "rd").Remove()
person fsimonazzi    schedule 28.11.2012