我有一个 XML 配置文件,我偶尔会向其中添加新元素,并且为了便于在应用程序之外阅读,我希望通过“add”元素的“key”属性保持它按字母顺序排序。
经过大量的试验和错误——使用我从这里、那里和任何地方收集的代码——我想出了下面的代码。它似乎工作正常,但我才刚刚开始学习 Linq to XML,所以我想知道这是否是一种合适的方法,或者是否有更好/更有效的方法我错过了。感觉就像我可能在重新创建整个文件元素时采取了不必要的步骤。
任何指导、想法或见解将不胜感激。
Dim newEx = cfgEx.<appSettings>(0)
newEx.Add(<add key=<%= sNewKey %> value=<%= sValue %>/>)
Dim sortEx = <configuration>
<appSettings>
<%= From c In cfgEx.<appSettings>.<add> Order By c.@key Select c %>
</appSettings>
</configuration>
cfgEx.ReplaceAll(sortEx.Nodes)
cfgEx.Save(sXmlConfigFile)
编辑
好的,所以我想我已经找到了一种更好的方法来做到这一点——无需在sortEx
变量中显式地重新创建所有父标签:
Dim newEx = cfgEx.<appSettings>(0)
newEx.Add(<add key=<%= sNewKey %> value=<%= sValue %>/>)
Dim sortEx = From c In newEx.<add> Order By c.@key Select c
newEx.ReplaceAll(sortEx)
cfgEx.Save(sXmlConfigFile)
所以我想现在唯一的问题是,这种方法有什么问题吗?