使用名称空间前缀删除xmlns属性

时间:2012-11-28 21:49:31

标签: c# xml vb.net xelement

这个问题是this one的逻辑延续 - 现在假设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。< / p>

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属性?

1 个答案:

答案 0 :(得分:4)

请改为尝试:

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