gpt4 book ai didi

.net - 如何使用 .NET XML API 删除 xmlns 属性

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:39 24 4
gpt4 key购买 nike

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"]);

结果输出是

xmlns attr before removal=System.Xml.XmlAttribute
xmlns attr after removal=
<Element1 attr1="value1" xmlns="http://mynamespace.com/" />

该属性似乎已从 Attributes 集合中删除,但并未从 XmlDocument.OuterXml 中删除。我猜是因为这个属性的特殊含义。

问题是如何使用 .NET XML API 删除 xmlns 属性。显然,我可以从它的字符串表示中删除该属性,但我想知道是否可以使用 API 做同样的事情。

@Edit:我说的是 .NET 2.0。

最佳答案

非常感谢 Ali Shah,这个帖子完美地解决了我的问题!这是一个 C# 转换:

var dom = new XmlDocument();
dom.Load("C:/ExampleFITrade.xml));
var loaded = new XDocument();
if (dom.DocumentElement != null)
if( dom.DocumentElement.NamespaceURI != String.Empty)
{
dom.LoadXml(dom.OuterXml.Replace(dom.DocumentElement.NamespaceURI, ""));
dom.DocumentElement.RemoveAllAttributes();
loaded = XDocument.Parse(dom.OuterXml);
}

关于.net - 如何使用 .NET XML API 删除 xmlns 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com