如何通过设置项目命名空间来摆脱xmlns =“”

时间:2012-02-12 05:52:01

标签: c# xml

当我运行以下代码添加带有属性的元素时,它总是在末尾添加xlmns =“”。我已经读过我需要为它的父类或类似的东西设置名称空间。奇怪的是,在父项 的文件中已经设置了命名空间,所以我不太清楚为什么在加载文档时不会考虑到这一点。但无论哪种方式,我只想知道如何告诉它命名空间,所以它会停止将xlmns =“”添加到所有内容的末尾。

XmlDocument xDoc = new XmlDocument();
xDoc.Load(projectFile);

// ...
// ...

var n = xDoc.CreateNode(XmlNodeType.Element, "Compile", null);
var a = xDoc.CreateAttribute("Include");
a.Value = filePath;
n.Attributes.Append(a);  
itemGroupNode.AppendChild(n);
xDoc.Save(@"c:\projects\BusinessObjects\BusinessObjects.csproj");

1 个答案:

答案 0 :(得分:3)

您正在向名称空间为""的元素添加名称空间为"http://schemas.microsoft.com/developer/msbuild/2003"的元素。这意味着新元素需要xmlns属性。

如果添加名称空间为"http://schemas.microsoft.com/developer/msbuild/2003"的元素,则不需要xmlns属性(因为它继承自父元素):

var n = xDoc.CreateNode(XmlNodeType.Element, "Compile",
            "http://schemas.microsoft.com/developer/msbuild/2003");