【发布时间】:2019-07-09 15:59:29
【问题描述】:
在下面的 xml 中,我试图删除 xmlns 属性,但是它无法在下面填充, xmlNode.Attributes 仍然出现在 outerxml 和最终 xmldocument 下。
...
<z:Datac knid="2" xmlns="http://services/api/"></z:Datac>
...
<z:Datac knid="3" xmlns="http://services/api/"></z:Datac>
....
<z:Datac knid="5" xmlns="http://services/api/"></z:Datac>
....
如何删除每个 z:Datac 元素的 xmlns 属性。
foreach (var item in nodes)
{
var xmlnsAttribute = (item.Attributes has "xmlns" attribute)
if (xmlnsAttribute != null)
{
Remove xmlNode... //not able to reach here as not able to find xmlns.
}
}
没有 xml.linq
【问题讨论】:
-
你试过什么?你绑定到
XmlDocument吗?在XDocument,el.Attribute("xmlns")?.Remove();似乎工作......(显然在实际代码中,您希望针对元素的 .Name.Namespace 测试 xmlns,并且只有在不同时才删除) -
没有,linq.xml。它的普通 - xmldocument/xmlNode.
-
上面的链接与 linq.xml 中的 xElement 一起使用。这里没有。
-
是的,我正在撤消关闭重复;这是一个完全不同且不兼容的 API
-
你从哪里得到这个 XML?看起来很可疑;冒号用于将 XML 命名空间与标签分开,
xmlns属性用于区分命名空间。但是这些在您的 XML 片段中都是错误的,z命名空间从未定义,xmlns属性未定义命名空间。要么这个 XML 不使用命名空间,要么严重损坏,要么你没有向我们展示实际的 XML。
标签: c# xml c#-4.0 xmldocument xmlnode