属性を持つ要素を追加するために次のコードを実行すると、最後にxlmns = ""が追加されます。私はそれが親のものかそれに類するものの名前空間を設定する必要があることを読んだ。奇妙なことに、ファイル内で親アイテムはに既に名前空間が設定されているため、ドキュメントがロードされたときになぜそれがまだ考慮されていないのか分かりません。しかしどちらの方法でも、名前空間がそこにあることを伝える方法を知りたいので、xlmns = "をすべての終わりに追加するのを止めます。xmlns = ""をプロジェクトネームスペースを設定して取り除く方法
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");
あなたは[XMLにLINQ]を使用していない何らかの理由(のhttp:/ /msdn.microsoft.com/en-us/library/bb387098.aspx)? – dtb
@dtb私はxmlをあまり扱っていません(少なくとも、自分自身でxmlを混乱させる必要はありません)。これは私がすばやく行う必要がある非常に小さなツールですので、私はそれを行う方法を見つけることができる最速の方法をやっているだけです。私は自分自身がそれ以上のXMLをやる必要があると分かったら、私はそれを使用すると確信しています。 –
古いXmlDocument/XmlElementクラスは、LINQ to XMLのXDocument/XElementクラスと比較して動作する痛みです。それを試してみてください! :-) – dtb