这个问题是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
属性?
答案 0 :(得分:4)
请改为尝试:
xml.Attribute(XNamespace.Get("http://www.w3.org/2000/xmlns/") + "rd").Remove()