我有一个XMLDocument,当我保存到文件中时,它在大多数元素上都重复一个名称空间,如[]中所示>
<Test> <Test xmlns="http://example.com/schema1"> <Name xmlns="http://example.com/schema2">xyz</Name> <AddressInfo xmlns="http://example.com/schema2"> <Address>address</Address> <ZipCode>zzzz</ZipCode> </AddressInfo> ...
是否可以修改此文件,使其在整个文档中使用名称空间前缀,即类似的东西>
<Test xmlns="http://example.com/schema1" xmlns:p="http://example.com/schema2" > <p:Name>xyz</p:Name> <p:AddressInfo"> <p:Address>address</p:Address> <p:ZipCode>zzzz</p:ZipCode> </p:AddressInfo> ...
我尝试添加
doc.DocumentElement.SetAttribute("xmlns:p", "http://example.com/schema2");
但是在此将名称空间添加到标题的同时,文件的主体保持不变。
我有一个XMLDocument,当我保存到文件时,它会在大多数元素上重复一个名称空间,如
您可以简单地change XmlElement.Prefix
property value:
XmlElement.Prefix
使用LINQ to XML的一种方法是将名称空间声明添加到根目录中,然后删除所有现有的名称空间声明,例如:
我找到了这个问题,它解决了我试图解决的问题,但是我需要一个更通用的解决方案,因此我在下面开发了扩展方法。它的灵感来自查尔斯·马格(Charles Mager)的答案,但是正如您所看到的,它远远超出了这个范围。说实话,我很后悔陷入了这个问题,因为要弄清楚这是一件很痛苦的事,但其他人可能会从中受益。