[英]how to add/insert conditional node into XML using linq to XML
我生成了一個像這樣的xml文件:
XElement employees =
new XElement("Work",
new XElement("record",
new XElement("Name", textBox1.Text),
new XElement("Phone", "206-555-0144"),
new XElement("Address",
new XElement("Street1", "123 Main St"),
new XElement("City", "Mercer Island"),
new XElement("State", "WA"),
new XElement("Postal", "68042")
)),
new XElement("record",
new XElement("Name", "22222"),
new XElement("Phone", "353245345"),
new XElement("Address",
new XElement("Street1", "sdfain St"),
new XElement("City", "asdf Island"),
new XElement("State", "QLD"),
new XElement("Postal", "54322")
)),
new XElement("record",
new XElement("Name", "Peter"),
new XElement("Phone", "1234"),
new XElement("Address",
new XElement("Street1", "sd St"),
new XElement("City", "cbr"),
new XElement("State", "act"),
new XElement("Postal", "2600")
)
)
);
后來我希望根據條件(其中name =“peter”)在父節點“record”下添加新的子節點,如下所示:
empFile.Elements().Where(r => (string)r.Element("Name") == "Peter")
.Add(new XElement("record",
new XElement("Mobile", "3253425"),
new XElement("Work", 999999)
));
我怎樣才能做到這一點?
除了Tim建議使用Where
后跟Single
或First
,還值得知道那些已經采用謂詞的方法存在重載。 例如:
empFile.Elements()
.Single(r => (string) r.Element("Name") == "Peter")
.Add(...);
你幾乎就在那里,你的Where子句返回一個IEnumerable<XElement>
而不是一個XElement,所以你只需要修復它,即調用.Single()或.First()等
例如:
XElement xe = empFile.Elements().Where(r => (string)r.Element("Name") == "Peter").Single();
xe.Add(new XElement("record", new XElement("Mobile", "3253425"), new XElement("Work", 999999));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.