LinqToXml

来源:互联网 发布:Oracle sql格式化时间 编辑:程序博客网 时间:2024/06/07 02:49

   今天学了这个,嘿嘿,新手的可以共同学习一下哦。

   在以前的XmlDocument的方法创建xml的节点感觉很多代码,今天学了LinqToXml感觉很轻松。对比代码

XmlDocument dc = new XmlDocument();
          
            stuinfo stu = new stuinfo();
            XmlNode xn = dc.CreateElement("students");
            XmlAttribute xmla = dc.CreateAttribute("stuid");
            xmla.Value = stu.stuid.ToString() ;
            xn.Attributes.Append(xmla);

            XmlNode xnl = dc.CreateElement("stuname");
            xnl.InnerText = stu.stuname;

            xn.AppendChild(xnl);
            dc.AppendChild(xn);
            dc.Save("D://fdsfds.xml");
            return true;

XElement element = new XElement("Books",
               new XElement("Book",
                   new XElement("title", "aaa"),
                  new XElement("Author", "hello"),
                   new XAttribute("id", 1)));
            element.Save("D://fds.xml");

XElement 的层次感更强一些,不会发图片。呵呵第一次发比较哦,大家别说我哈。我初学阶段。~~

下面是LInq对XML的操作:

//把数据库中的表读取成xml的文件,保存在D盘123.xml文件

 SqlConnection conn = new SqlConnection("server=.;database=student;uid=sa;pwd=123456");
            string sql = "select * from BOOK";
            SqlDataAdapter da = new SqlDataAdapter(sql,conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            XElement element = new XElement("Books");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                XElement elments = new XElement(
                    new XElement("book",
                        new XElement("title", dt.Rows[i]["Book"]),
                            new XElement("Athor", dt.Rows[i]["Author"])


                        )


                    );
                element.Add(elments);

            }
            element.Save("D://123.xml");

 

//获取指定的节点
        protected void Button8_Click(object sender, EventArgs e)
        {
            string xmlpath = Server.MapPath("BOOK.xml");
            XDocument doc = XDocument.Load(xmlpath);
            //获取根
            XElement root = doc.Root;
            IEnumerable<XElement> elements = from elem in root.Elements("Book")
                                             where (string)elem.Attribute("id")
                                             == id1.Value//id1是个TEXTBOX哈
                                             select elem;
            Response.ContentType = "text/xml";
            foreach (XElement ele in elements)
            {
                Response.Write(ele);

            }
            Response.End();
        }

 

对节点的修改

 string xmlpath = Server.MapPath("BOOK.xml");
            XDocument doc = XDocument.Load(xmlpath);
            XElement root = doc.Root;
            IEnumerable<XElement> elements = from elem in root.Elements("Book")
                                             where (string)elem.Attribute("id")
                                             == "1"//1被写死了,大家可以用TEXTBOX
                                             select elem;
            if (elements.Count()>0)
            {
                XElement el = elements.First();/这里我写的是修改第一个节点,如果修改其他的要用循环匹配哦
                el.SetAttributeValue("id", "1");
                el.ReplaceNodes(new XElement("title", "ajax"),
                    new XElement("Author", "怀特"));
            }
            root.Save(xmlpath);

删除节点和修改基本一样哦,就不浪费空间贴代码了。 是不是有点乱?如果有没看懂的给我留言,我已经把乱的地方加了注释了。呵呵,我菜鸟,不过我有心意哦~~对了,不知道LINQ是什么的,那么代码里的LINQ语法可能会看不懂。。。可以去参考来继敏老师才讲的lamda表达式。

原创粉丝点击