从数据库生成:
public static void ToXML(string tablename) { //获取数据 string sql = "select * from " + tablename; DataTable dt = SqlHelper.GetList(sql); //创建xml对象 XDocument document = new XDocument(); //创建根节点 XElement root = new XElement(tablename + "s"); document.Add(root); //遍历表格,添加结点 foreach (DataRow item in dt.Rows) { //创建元素节点 XElement element = new XElement(tablename); //设置编号属性(key value,效果:<user c_id="1"> </user>) element.SetAttributeValue(dt.Columns[0].ColumnName, item[0].ToString());//假设0列为主键列 //将所有列(除编号列外)分别生成子元素(key value,效果: <c_name>洛杉矶</c_name>) for (int i = 1; i < dt.Columns.Count; i++) { element.SetElementValue(dt.Columns[i].ColumnName, item[i].ToString()); } root.Add(element); } //保存生成的xml document.Save(tablename+".xml"); }
从文件中读取:
public void getXml() { XDocument document = new XDocument(); //加载文件 document = XDocument.Load("Test.xml"); //读取根节点 XElement root = document.Root; // Console.WriteLine("节点名:"+root.Name+"节点值:"+root.FirstAttribute.Value); //加入节点前使用linq to xml的语法判断id是否存在 int n = root.Elements("student").Where(u => u.Attribute("id").Value == "15" || u.Element("name").Value == "王五").Count(); if (n > 0) { Console.WriteLine("id已经存在"); } else { XElement element = new XElement("student"); //设置属性 element.SetAttributeValue("id", "15"); //设置节点下的子节点 element.SetElementValue("name", "王五"); element.SetElementValue("age", "68"); //加入到根元素下 root.Add(element); //保存操作 document.Save("Test.xml"); } //循环读取节点内容 foreach (XElement item in root.Elements()) { Console.WriteLine("节点名:" + item.Name + " 节点属性值:" + item.Attribute("id").Value + " 节点值:" + item.Element("name").Value); } }
XElement n = root.Elements("rootFile").Where(u => u.Attribute("name").Value == "rf").ElementAt(0);
MessageBox.Show(n.Attribute("value").Value);
展示一下子节点的属性值