从文件添加元素时删除xmlns =“”属性

时间:2013-12-24 15:46:08

标签: c# xml csproj xml-attribute

我将XmlElemnt添加到另一个文件的csproj文件中:

//load the orginal file
 XmlDocument xd = new XmlDocument();
 xd.Load(fileName);

//load the csproj file to setting
 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(project.FullName);

//copy a XmlNode from the orginal file
XmlNode copiedNode = xmlDoc.ImportNode(xd.SelectSingleNode(nodeName), true);
//add the XmlNode to the csproj file
xmlDoc.DocumentElement.InsertAfter(copiedNode,xmlDoc.GetElementsByTagName(nodeName).Item(0));

并且源代码自动将属性xmlns =“”添加到添加的节点:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'AAA|x86'" xmlns=""> 

我在帖子中看到了类似的问题: Remove xmlns=“” attribute when adding Reference element into csproj。 解决方案是添加命名空间,但我没有找到如何将命名空间添加到我的代码中。

我该怎么做?或者还有其他方法可以避免添加xmlns属性吗?

1 个答案:

答案 0 :(得分:1)

您有两种可能的解决方案:

第一个是设置原始文件的根节点的命名空间:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'AAA|x86'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

在这种情况下,原始元素的命名空间将与目标根命名空间相同,并且不会添加xmlns属性。

如果不可能,则需要更改程序中的命名空间。但是不允许按设计修改加载的XNode。 It can help.