前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ADO.NET结合XPath查询读取数据库

ADO.NET结合XPath查询读取数据库

作者头像
SAP梦心
发布2022-05-07 20:31:14
6820
发布2022-05-07 20:31:14
举报
文章被收录于专栏:SAP梦心的SAP分享

这几天狂看关于读写XML文件方面的资料,虽然XML比MSSQL方便,不用安装数据库服务软件,也不用附加数据库等操作,但XML毕竟不适合做大的数据存储,因为每当查询读取XML文件时都要先读取它到数据集然后再进行查询(MSSQL是先查询数据,再把查询结果存到数据集),这在无形中占用了一点内存,也失去了一些效率,这在XML文件比较大的时候效果很明显。

所以XML一般用作配置文件用,它的作用也不容小视。学习如何高效率得读写XML文件是.NET程序员必学的技术。

在.NET中很好得提供了对XML的支持,除了二进制读取方式和DOM方式之外还有ADO.NET,通过DataSet载入XML并利用XML的“SQL语句”——Xpath查询可以很方便得进行一些操作。

首先我们的XML文件内容如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>

<messages>

  <message id="7836733" targer="Loreto" status="sent">

    <sender>Steven</sender>

    <body>1</body>

  </message>

  <message id="7836712" targer="Eileen" status="sent">

    <sender>Loreto</sender>

    <body>2</body>

  </message>

  <message id="7836735" targer="Steven" status="pending">

    <sender>Eileen</sender>

    <body>3</body>

  </message>

</messages>

文件名称为sample.xml。

 

现在要读取特定节点的值,在VS2008里面新建一个控制台程序,敲入如下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;  //必须要引入的命名空间

using System.Data;   //必须要引入的命名空间

 

namespace ADOXML

{

    class Program

    {

        static void Main(string[] args)

        {

            DataSet ds = new DataSet();   //建一个DataSet对象用来读取XML

            ds.ReadXml("sample.xml");

            XmlDataDocument xdd = new XmlDataDocument(ds);

            XmlElement xe;

            foreach (DataRow dr in ds.Tables["message"].Rows)

            {

                xe = xdd.GetElementFromRow(dr);

                XmlNode xn = xe.SelectSingleNode("/messages/message[@id='7836735']");   //Xpath用处就在这里

                foreach (XmlNode xn1 in xn.ChildNodes)

                {

                    if ((xn1.NodeType == XmlNodeType.Element) && (xn1.Name == "sender"))

                    {

                        Console.WriteLine(xn1.InnerText.ToString());

                    }

                }

                //Console.Write(xn.r.Value);

                Console.ReadKey();

            }

        }

    }

}

结果为:Eileen

这个只是简单的读取,至于增删改等操作也是类似,我会在接下去的日子里进行讲解。本文不是讲解XPath的内容,对Xpath不熟悉的园友可以参考其他教程!

注:有纰漏错误的地方请指正,谢谢!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档