LinqToXml

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

   在以前的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表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值