C# 创建属性为C的XML元素“有额外的xmls=”&引用;

C# 创建属性为C的XML元素“有额外的xmls=”&引用;,c#,xml,C#,Xml,以下是我的要求。我正在读取xml文件(*.csproj文件)并在其中搜索节点。找到节点后,我会将元素插入其中。 以下是我的原始XML: <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup&g

以下是我的要求。我正在读取xml文件(*.csproj文件)并在其中搜索节点。找到节点后,我会将元素插入其中。 以下是我的原始XML:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
    <ClInclude Include="Stdafx.h" />
    <ClInclude Include="NewFile.h" />
  </ItemGroup>
</Project>
这是我得到的输出

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <ClInclude Include="Stdafx.h" />
    <ClInclude Include="NewFile.h" />
    <ClInclude Include="NewHeaderFile.h" xmlns="" />
  </ItemGroup>
</Project>

问题陈述: 我想忽略输出中的xmlns=”“。 我的输出应该是这样的

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <ClInclude Include="Stdafx.h" />
    <ClInclude Include="NewFile.h" />
    <ClInclude Include="NewHeaderFile.h" />
  </ItemGroup>
</Project>

金迪,帮帮我。
感谢您的宝贵时间。

使用以下内容更改您的元素声明,应该可以使用

XmlElement xele = xDoc.CreateElement("ClInclude", xDoc.DocumentElement.NamespaceURI);

在根上添加名称空间意味着您的元素位于
'root'名称空间
,因此无需向新元素添加
'no namespace'
,原始文档中的所有元素都位于名称空间
xmlns=”http://schemas.microsoft.com/developer/msbuild/2003“
,而您正在空名称空间
中创建新的
ClInclude
元素。如果您还在
xmlns=”中创建此元素http://schemas.microsoft.com/developer/msbuild/2003“
,将从输出xml中忽略无关的
xmlns=”“

花点时间阅读帮助中心中的。堆栈溢出上的格式设置与其他站点不同。你的帖子越好看,用户就越容易帮助你。谢谢@StuartLC的帮助。正如你所说的那样。我用原始名称空间创建了元素。谢谢@InvernoMuto的帮助。更改元素声明后,它按我预期的那样工作。
XmlElement xele = xDoc.CreateElement("ClInclude", xDoc.DocumentElement.NamespaceURI);