我試圖在下面的XML中添加(插入)新的<Period></Period>
元素;C# - 使用LINQ XML向XML文件添加新元素(XDocument/XElement)
<?xml version="1.0" encoding="utf-8"?>
<Scheduler>
<Module guid="64A3EB4C-7F34-47F3-8894-933CB0048D87">
<RetrieveDays>1</RetrieveDays>
<Schedule>
<Period>1</Period>
<Period>33</Period>
<Period>49</Period>
<Period>73</Period>
</Schedule>
</Module>
</Scheduler>
因此,例如,我傳遞值96,新的XML將看起來像;
<?xml version="1.0" encoding="utf-8"?>
<Scheduler>
<Module guid="64A3EB4C-7F34-47F3-8894-933CB0048D87">
<RetrieveDays>1</RetrieveDays>
<Schedule>
<Period>1</Period>
<Period>33</Period>
<Period>49</Period>
<Period>73</Period>
<Period>96</Period>
</Schedule>
</Module>
</Scheduler>
使用下面的代碼;
// period is the new value
XDocument xmlDoc = new XDocument();
xmlDoc = XDocument.Load(String.Format(@"{0}\{1}", settingsDir, settingsFilename));
XElement periodNodes = xmlDoc.Root.Descendants("Module").Where(i => (String)i.Attribute("guid") == moduleGuId).First().Element("Schedule");
if (periodNodes.Descendants("Period").Where(x => x.Value == period.ToString()).Count() == 0)
periodNodes.Add(new XElement("Period", period.ToString()));
xmlDoc.Save(String.Format(@"{0}\{1}", settingsDir, settingsFilename));
但遺憾的是沒有新的<Period></Period>
元素被創建。我檢查了XML是有效的,它是。我嘗試重命名元素,但沒有改變。
我一直在撓我的頭幾個小時,找不到解決方案,我錯過了什麼?任何幫助,將不勝感激!
**** ****更新
那麼,這是尷尬的:我重新啓動電腦,VS和現在的作品...進入數字。儘管如此,謝謝大家如此快速的迴應和建議。
有你通過它加強並檢查'periodNodes.Add'實際上是叫? –
在問我們之前,您可以[使用調試器](http://www.codeproject.com/Articles/79508/Mastering-Debugging-in-Visual-Studio-A-Beginn)遍歷代碼並檢查你的'if'語句中的子句實際上評估爲真,如果不是,爲什麼不 –
檢查[這個小提琴](https://dotnetfiddle.net/Wfh7iq) - 你的代碼工作正常。如果您仍然遇到問題,請添加[mcve]。 –