您的位置:首页 > 编程语言 > Qt开发

LinqToXml

2010-09-25 18:04 411 查看
   今天学了这个,嘿嘿,新手的可以共同学习一下哦。

   在以前的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表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息