如何使用C#从XML中删除所有名称空间?

如何使用C#从XML中删除所有名称空间?,第1张

如何使用C#从XML中删除所有名称空间?

好吧,这是最终答案。我使用了很好的Jimmy想法(不幸的是,它本身并没有完成),并且使用了完整的递归功能才能正常工作。

基于接口:

string RemoveAllNamespaces(string xmldocument);

我在这里代表最终的干净通用的C#解决方案,用于删除XML名称空间:

//Implemented based on interface, not part of algorithmpublic static string RemoveAllNamespaces(string xmldocument){    XElement xmldocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xmldocument));    return xmldocumentWithoutNs.ToString();}//Core recursion function private static XElement RemoveAllNamespaces(XElement xmldocument)    {        if (!xmldocument.HasElements)        { XElement xElement = new XElement(xmldocument.Name.LocalName); xElement.Value = xmldocument.Value; foreach (XAttribute attribute in xmldocument.Attributes())     xElement.Add(attribute); return xElement;        }        return new XElement(xmldocument.Name.LocalName, xmldocument.Elements().Select(el => RemoveAllNamespaces(el)));    }

它正在100%正常工作,但是我没有对其进行太多测试,因此它可能无法涵盖某些特殊情况……但这是一个很好的起点。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5602345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存