【发布时间】:2009-03-20 14:58:12
【问题描述】:
我正在开发一个解析 .csproj 文件的应用程序。如果存在,它需要向<NoWarn> 属性添加一个附加值。如果该属性不存在,我希望应用程序将此属性及其值添加到指定的父节点。我怎样才能做到这一点?我正在使用 LINQ-to-XML 来解析项目文件。
【问题讨论】:
标签: c# xml linq linq-to-xml
我正在开发一个解析 .csproj 文件的应用程序。如果存在,它需要向<NoWarn> 属性添加一个附加值。如果该属性不存在,我希望应用程序将此属性及其值添加到指定的父节点。我怎样才能做到这一点?我正在使用 LINQ-to-XML 来解析项目文件。
【问题讨论】:
标签: c# xml linq linq-to-xml
未经测试,但是否类似于:
XNamespace ns = @"http://schemas.microsoft.com/developer/msbuild/2003";
XDocument doc = XDocument.Load(path);
var noWarn = (from grp in doc.Descendants(ns + "PropertyGroup")
from el in grp.Descendants(ns + "NoWarn")
select el).FirstOrDefault();
if(noWarn==null) {
var grp = doc.Descendants(ns+"PropertyGroup").First();
grp.Add(new XElement(ns+"NoWarn", "1234"));
} else {
noWarn.Value += "; 1234";
}
doc.Save(path);
【讨论】: