如何更改命名空间的前缀?
Posted
技术标签:
【中文标题】如何更改命名空间的前缀?【英文标题】:How to change prefix of a namespace? 【发布时间】:2021-01-25 06:08:54 【问题描述】:如何转换它
<d xmlns='uri' xmlns:a='uri'>
<a:c/>
<c a:atr=':a:b:c:d:e:f:'/>
</d>
进入这个
<d xmlns='uri' xmlns:b='uri'>
<b:c/>
<c b:atr=':a:b:c:d:e:f:'/>
</d>
?
有可能吗?最好是System.Xml.XmlDocument
。
如果 .Net 无法实现,您知道用什么可以实现吗?
【问题讨论】:
可能重复:xml-serialization-and-namespace-prefixes 【参考方案1】:我对这个 API 有点生疏了,但你应该可以使用 XDocument
来替换命名空间:
var document = XDocument.Load(@"E:\input.xml");
// Find and remove the namespace
document.Root.Attribute(XNamespace.Xmlns + "a").Remove();
// Add a new namespace with same uri and different prefix
document.Root.Add(new XAttribute(XNamespace.Xmlns + "b", "uri"));
document.Save(@"E:\output.xml");
保存时,XDocument
会重新生成 XML,并且只要您保持相同的 uri,就应该应用新前缀。
【讨论】:
System.Xml.XmlDocument 有可能吗? 因为如果xmlns
与xmlns:a
相同,那么每个没有前缀的节点都会以b
为前缀(如果a
改为b
)。以上是关于如何更改命名空间的前缀?的主要内容,如果未能解决你的问题,请参考以下文章
webservices 更改 ASMX Web 服务返回的命名空间前缀
使用 Microsoft.xmldom 更改 XML 元素的命名空间前缀,以便利用 GetElementsByTagName