axk*_*axk 8 .net xml api xml-namespaces
XmlElement.Attributes.Remove*方法适用于任意属性,导致从XmlDocument.OuterXml属性中删除已删除的属性.然而,Xmlns属性是不同的.这是一个例子:
XmlDocument doc = new XmlDocument();
doc.InnerXml = @"<Element1 attr1=""value1"" xmlns=""http://mynamespace.com/"" attr2=""value2""/>";
doc.DocumentElement.Attributes.RemoveNamedItem("attr2");
Console.WriteLine("xmlns attr before removal={0}", doc.DocumentElement.Attributes["xmlns"]);
doc.DocumentElement.Attributes.RemoveNamedItem("xmlns");
Console.WriteLine("xmlns attr after removal={0}", doc.DocumentElement.Attributes["xmlns"]);
Run Code Online (Sandbox Code Playgroud)
结果输出是
xmlns attr before removal=System.Xml.XmlAttribute
xmlns attr after removal=
<Element1 attr1="value1" xmlns="http://mynamespace.com/" />
Run Code Online (Sandbox Code Playgroud)
该属性似乎从Attributes集合中删除,但不会从XmlDocument.OuterXml中删除.我想这是因为这个属性的特殊含义.
问题是如何使用.NET XML API删除xmlns属性.显然我可以从String的表示中删除该属性,但我想知道是否可以使用API执行相同的操作.
@Edit:我说的是.NET 2.0.
.NET DOM API 不支持修改元素的命名空间,而这正是您本质上想要做的。因此,为了解决您的问题,您必须以某种方式构建一个新文档。您可以使用相同的 .NET DOM API 并创建新元素,而无需指定其命名空间。或者,您可以创建一个 XSLT 样式表,将原始的“命名空间”文档转换为新文档,其中的元素将不受命名空间限定。
| 归档时间: |
|
| 查看次数: |
24560 次 |
| 最近记录: |