xml更改属性的值

我在xml文件中有以下文本:

           

我需要更改位于LibraryDirectory LibraryDirectory=下的文本“C:\ XCAM”。

这样做的聪明方法是什么,我只是不想搜索LibraryDirectory=然后搜索第一个和最后一个“然后更改文本。”

 var doc = XDocument.Load("test.xml"); doc.Root.Element("XCAM").Attribute("LibraryDirectory").Value = "new value"; doc.Save("test.xml"); 

更新:

 doc.Root .Element("InputFormats") .Element("XCAM") .Attribute("LibraryDirectory").Value = "new value"; 

或使用XPATH:

 doc.XPathSelectElement("//InputFormats/XCAM") .Attribute("LibraryDirectory").Value = "new value"; 

不要忘记添加使用System.Xml.XPath因为XPathSelectElement是一个扩展方法。

您可以通过这个基本的XSL样式表传递XML:

               

要将样式表应用于XML文档,可以使用XslCompiledTransform类 。

您可以将文件加载到XmlDocument中,使用XPath选择属性,然后将其写回。 这要复杂得多,但可能是生产代码的“正确”解决方案。

如果要替换多个文件或多个匹配项,RegEx可能是一个更容易的选项 – 这可能是更快更短的代码,但它不是描述性的。 如果你正在做的是(比如说)编写一个非生产用途的工具(比如,转换一堆配置文件以便在不同的机器上使用),这可能是合理的。