StringBuilder sb = new StringBuilder();
sb.Append("<options>");
sb.Append("<option key='1'>");
sb.Append("<suboption name='A1' value='a1的值' />");
sb.Append("<suboption name='b1' value='b1的值' />");
sb.Append("</option>");
sb.Append("<option key='2'>");
sb.Append("<suboption name='A2' value='a2的值' />");
sb.Append("<suboption name='b2' value='b2的值' />");
sb.Append("</option>");
sb.Append("</options>");
XElement all = XElement.Parse(sb.ToString());
#region 添加
XElement add = new XElement("option",
new XAttribute("key", "3"),
new XElement("suboption", new XAttribute("name", "a3"), new XAttribute("value", "a3的值")),
new XElement("suboption", new XAttribute("name", "b3"), new XAttribute("value", "b3的值"))
);
all.Add(add);
#endregion
#region 编辑
XElement edit = (from db in all.Elements("option") where db.Attribute("key").Value.ToString() == "2" select db).Single();
edit.Attribute("key").Value = "new2";
foreach (var item in edit.Elements())
{
if (item.Attribute("name").Value.ToString() == "b2")
{
edit.Element("suboption").Attribute("name").Value = "新修改后的Nameb2";
}
}
#endregion
#region 删除
XElement Delete = (from m in all.Elements("option") where m.Attribute("key").Value.ToString() == "1" select m).Single();
Delete.Remove();
#endregion
#region 查询
List<XElement> list = (from m in all.Elements("option") where m.Attribute("key").ToString() == "3" select m).ToList();
//循环附加值
#endregion
参考地址
http://de.cel.blog.163.com/blog/static/5145123620119983945167/