XML的数据提取和保存到数据库中

这篇博客介绍了如何读取XML文件中的数据,并使用LINQ查询将这些数据与数据库中的记录关联,通过比较XML文档中'book'元素的ISBN属性与数据库中书籍的ISBN,将数据分组并按标题排序,最终将作者ID存储到数据库或展示。整个过程展示了XML处理和数据库操作的结合应用。
摘要由CSDN通过智能技术生成
//读取XML里的数据并把数据保存到数据库中
        protected void Button2_Click(object sender, EventArgs e)
        {
            List<book> bookList = book.GetbookList();//获取数据源
            //XElement doc = XElement.Load( "E:\\1.课程资料\\7.asp.net\\2.asp.net(下)\\1.复习\\1.c#\\12.linQ\\LINQ\\Authors.xml");
            XElement doc = XElement.Load(Server.MapPath("XML.xml"));
            //然后是开始查询。两个数据源将通过图书ISBN字符串值联接在一起,因此该查询要遍历的是XML文档中的
            //“book”元素而不是“author”元素,接着就是联接两个数据源
            var authorsByBooks =
                from bookk in doc.DescendantsAndSelf("book")
                join bookInfo in bookList on bookk.Attribute("isbn").Value
                   equals bookInfo.ISBN
                //现在该查询为XML文档中的图书建立了变量authorId,已知“<author>”元素是“<book>”元素的父元素
                //因此可以使用XElement类的Parent方法毫不费事的获取该元素及其Id属性
                let authorId = bookk.Parent.Attribute("id").Value
                //设置分组结果按图数标题进行排序
                orderby bookInfo.Title
                //然后该查询对作者Id进行分组
                group new { AuthorId = authorId }
                    //按照已获取到值得图书标题分组
                by bookInfo.Title
                    into groupedAuthors//重新定义一个字段
                    select new
                    {
                        Title = groupedAuthors.Key,
                        Authors = groupedAuthors
                    };
            //最后,当结束数据处理时,函数会遍历查询结果并首先显示每个作者ID分组中作为键值的图书标题
            foreach (var bookk in authorsByBooks)
            {
                lblBooks.ToolTip += string.Format("{0}", bookk.Title);
                foreach (var author in bookk.Authors)
                {
                    //string str=string.Format("{0}<br/>", author.AuthorId);
                    lblBooks.Text += string.Format("{0}<br/>", author.AuthorId);
                    //string name = lblBooks.Text.Substring('*',5)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值