後,我有一個XML文件,例如:C#LINQ到XML更新(保存)名單訂購
<?xml version="1.0" encoding="utf-8"?>
<FooMgr>
<BlargDate>2017-03-06 10:26:21</BlargDate>
<Bars>
<Bar>
<BarId>222</BarId>
<BarVal>QWERTY</BarVal>
</Bar>
<Bar>
<BarId>77</BarId>
<BarVal>DVORAK</BarVal>
</Bar>
<Bar>
<BarId>9999</BarId>
<BarVal>AZERTY</BarVal>
</Bar>
</Bars>
</FooMgr>
和我:
- 閱讀它
- 添加「酒吧」元素
- 責令由BarId
- 下降試圖保存向上過時/將xml分類迴文件。
雖然添加的元素在我保存之後在列表中,但它不會保留我在保存時在代碼中定義的順序。這是我走這麼遠(主要是工作的有效代碼)
//read in the xml file
XDocument doc = XDocument.Load(...);
//add a new 'Bar' element
XElement bar1 = new XElement("Bar",
new XElement("BarId", 101),
new XElement("BarVal", "HCESAR"));
doc.Element("FooMgr").Element("Bars").Add(bar1);
//sort descending by BarId
IEnumerable<XElement> allBars = doc.Descendants("FooMgr")
.Select(x => x.Element("Bars"))
.Descendants("Bar")
.ToArray();
allBars = allBars.OrderByDescending(s => int.Parse(s.Element("BarId").Value));
//save file
doc.Save(...);
// note: at this point the file successfully saves (along with the
// new 'bar' value, but the order that is set for allBars does not
// make it back into the file.
雖然這條線:
allBars = allBars.OrderByDescending(s => int.Parse(s.Element("BarId").Value));
似乎在「酒吧」在代碼元素正確排序,當我回來將它保存到文件的順序不會持久。
有什麼想法?
Downvoter你能解釋一下爲什麼? – octavioccl
@Dispersia,引用OP:「但是爲allBars設置的順序不是 使其重新回到文件中。」 – octavioccl
@octavioccl這正是我所期待的,並按預期工作。謝謝! @ Dispersia對不起,如果我的問題有點模糊 – russellelbert