后,我有一个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