net 平台提供了这个类呀!!!数据源!!!!
dataset 
dateadapter
datatablereadxml() writexml()
你看一下msdn,
把它的这一套东西看一下,没多少,而且msdn上还有例子呢

解决方案 »

  1.   

    忘了补充 要求效率 用 XmlReader 和 XmlWriter
      

  2.   

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ※以下是引用楼主 sWinZ(死蚊子) 在2007-04-24 12:04:44 的发言:
    ──────────────────────────────────────────
    忘了补充 要求效率 用 XmlReader 和 XmlWriter
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    你要想跟操作数据库那样就一定得用XmlDocument和XPath了,XmlReader根本就满足不了你的要求
      

  3.   

    你要想跟操作数据库那样就一定得用XmlDocument和XPath了,XmlReader根本就满足不了你的要求
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    为什么?虚心请教 举个例子
      

  4.   

    没有Xpath你怎么做搜索之类的功能?
    自己写一个解析.效率未必有XmlDocumnet高吧
      

  5.   

    关于搜索 MSDN里写的很明白了
      

  6.   

    XML文件做数据库还想要求效率
    那你不如直接用XMLDB,老美的产品
    关于搜索 MSDN里写的很明白了
    -----------
    既然MSDN里面都写明白了
    那我不明白你还问什么??
      

  7.   

    呵呵,吵翻天了.如果XML文件读到DATASET中是一个标准的二维表就铁定用DATASET了,如果不是标准的二维表,而是表套表的情况,那么微软提供的那些类都不能用的(高效掌握ADO.NET--C#变成篇中的介绍的方法也不行).只能用 0009(夏天以南)  老兄说的办法,用xpath能带来最大的灵活性,而且对XML文件也能有最深的了解,对XML进行增删改等也会得心应手,再配合XmlDataDocument 或者XmlDocument等使用才是最好的办法,只有把握的了XML的本质才能真的把XML当成一种有效的数据源来使用.
    说来说去最主要的还是XPath查询语言的运用以及对它的理解,虽然W3C大力推荐DataSet,前面已经说了,他只能处理标准的二维表,所以它的局限性也就很大了(或许是我对DataSet了解的不够吧)
      

  8.   

    既然MSDN里面都写明白了
    那我不明白你还问什么??
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━我要的是“类的基本框架”换句话说,你会sqlcon等等等,但你写过的程序有限,你能保证你封的类是相对比较完整的么?即使以后可以二次开发,但为什么第1次不尽量写好一点呢我的目的就是这个
      

  9.   

    呵呵,吵翻天了.如果XML文件读到DATASET中是一个标准的二维表就铁定用DATASET了,如果不是标准的二维表,而是表套表的情况,那么微软提供的那些类都不能用的(高效掌握ADO.NET--C#变成篇中的介绍的方法也不行).只能用 0009(夏天以南)  老兄说的办法,用xpath能带来最大的灵活性,而且对XML文件也能有最深的了解,对XML进行增删改等也会得心应手,再配合XmlDataDocument 或者XmlDocument等使用才是最好的办法,只有把握的了XML的本质才能真的把XML当成一种有效的数据源来使用.
    说来说去最主要的还是XPath查询语言的运用以及对它的理解,虽然W3C大力推荐DataSet,前面已经说了,他只能处理标准的二维表,所以它的局限性也就很大了(或许是我对DataSet了解的不够吧)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    wangchao1982(飘零一剑)说的也很有道理我是想能不能在达成目的的情况下最大提升代码的执行效率PS:上面的帖子没说完,我的目的是综合大家的经验,写一个相对比较完整的类,而省去二次开发的时间与更改代码后,项目也要随之更改的弊端
      

  10.   

    http://www.codeproject.com/cs/database/xmlclient.asp
    这个不完善,但框架有了
      

  11.   

    给2个例子 自己看一下
    主要是用大是XmlDocument  XmlElement  XmlNode等类
     /// <summary>
            /// 
            /// </summary>
            /// <param name="dt">要保存的DataTable数据</param>
            /// <param name="filepath">此次任务下载内容的保存地址</param>
            /// <param name="proxy">使用的代理组</param>
            /// <param name="append">插入记录的类型true为追加:false为覆盖</param>
            public void AddPlan(DataTable dt, string filepath, string proxy,bool append)
            {
                xmldoc.Load(patentDataPath);
                bool isSave = false;
                XmlNode plan_root = xmldoc.SelectSingleNode("plans");            XmlElement elepatents = xmldoc.CreateElement("patents");//创建专利列表
                if (dt != null)
                {
                    int a = dt.Rows.Count;
                    foreach (DataRow dr in dt.Rows)
                    {
                        XmlElement elepatent = xmldoc.CreateElement("patent");
                        elepatent.SetAttribute("col_pno", dr[0].ToString());
                        elepatent.SetAttribute("col_web", dr[1].ToString());
                        elepatent.SetAttribute("col_savedir", dr[3].ToString());
                        elepatent.SetAttribute("col_stime", dr[4].ToString());
                        elepatent.SetAttribute("col_utime", dr[5].ToString());
                        elepatent.SetAttribute("col_href", TrimSpecialChar(dr[6].ToString()));
                        elepatent.SetAttribute("col_state", dr[7].ToString());
                        //elepatent.SetAttribute("col_proxygroup", dr[8].ToString());
                        elepatent.InnerText = dr[2].ToString();
                        elepatents.AppendChild(elepatent);
                        // <patent ="" col_web="" col_savedir="" col_stime="" col_utime="" col_href="" col_state="" col_proxy="">pname</patent>
                    }//把datatable中的数据保存进列表
                }            foreach (XmlNode xn in plan_root.ChildNodes)
                {
                    XmlElement ele_xn = (XmlElement)xn;
                    if (ele_xn.SelectSingleNode("filepath")!=null&&ele_xn.SelectSingleNode("filepath").InnerText.ToString().Equals(filepath))
                    {
                        if (!append)
                        {
                            xn.RemoveAll();
                            XmlElement elefilepath = xmldoc.CreateElement("filepath");
                            XmlElement eleproxygroup = xmldoc.CreateElement("proxygroup");
                            elefilepath.InnerText = filepath;
                            xn.AppendChild(elefilepath);
                            xn.AppendChild(eleproxygroup);
                        }
                        xn.AppendChild(elepatents);
                        plan_root.AppendChild(xn);
                        isSave = true;
                    }
                }
                if (!isSave) {
                    XmlElement ele_plan = xmldoc.CreateElement("plan");
                    XmlElement elefilepath = xmldoc.CreateElement("filepath");
                    XmlElement eleproxygroup = xmldoc.CreateElement("proxygroup");                elefilepath.InnerText = filepath;                ele_plan.AppendChild(elefilepath);
                    ele_plan.AppendChild(eleproxygroup);
                    ele_plan.AppendChild(elepatents);
                    
                    plan_root.AppendChild(ele_plan);
                }
                xmldoc.Save(patentDataPath);
            }
      

  12.   


    方法三 :使用DataSet对象 
    <% @ Page Language="C#"%> 
    <% @ Import Namespace="System.Data"%> 
    <% @ Import Namespace="System.Data.OleDb"%> 
    <script language="C#" runat="server"> 
    void Page_Load(Object sender,EventArgs e) 

    DataSet objDataSet=new DataSet(); 
    objDataSet.ReadXml(Server.MapPath("grade.xml")); 
    dgEmployees.DataSource=objDataSet.Tables["student"].DefaultView; 
    dgEmployees.DataBind(); 

    </script> 
    <body> 
    <h3><font face="Verdana">读取XML方法三</font></h3> 
    <asp:DataGrid id="dgEmployees" runat="server" /> 
    </body> 
    </html> 详细出处参考:http://www.jb51.net/article/8865.htm
      

  13.   


    XML文件的读取1
    XML文件格式如下:
    <?xml version="1.0" encoding="utf-8"?>
    <configure>
      <config id="path" value="D:\新建文件夹" />
    </configure>//xml文件所在路径
    private readonly static string xmlFilePath = @"..\..\DvrOut\path.xml";
       private readonly static XmlDocument document = new XmlDocument();/// <summary>
            /// 获取XML中文件的保存路径
            /// </summary>
            /// <returns></returns>
            public string GetPathByConfigid()
            {
                document.Load(xmlFilePath);            string result = null;
                foreach (XmlNode node in document["configure"])
                {
                    if (node.Attributes["id"].Value.ToString() == "path")
                    {
                        result = node.Attributes["value"].Value.ToString();
                    }
                }
                return result;
            }
            /// <summary>
            /// 设置XML中文件的保存路径
            /// </summary>
            /// <param name="text"></param>
            public static void SetConfig(string text)
            {
                document.Load(xmlFilePath);            foreach (XmlNode node in document["configure"])
                {
                    if (node.Attributes["id"].Value.ToString() == "path")
                    {
                        node.Attributes["value"].Value = text;
                    }
                }
                document.Save(xmlFilePath);
            }
    XML文件读取方法2
    XML文件如下:
    <a> 
      <b>bbb </b> 
      <c>ccc </c> 
    </a>
    读取b节点
    public string readXml(string xmlpath, string element)//xmlpath是xml的文件名,element是你要查询的节点的名称,就是b 

     try 

    string value = ""; 
    XmlDocument doc = new XmlDocument();
    doc.Load(xmlpath); 
    XmlNode node = doc.SelectSingleNode("//" + element); 
    //如果a外层还有节点就改为(“//外节点//”+ element)
    value = node.InnerText; 
    return value; 

    catch (Exception e) 

    return ""; 

    }
    XML文件读取方法3
    XML文件如下:
    <a>
      <b1>
        <c>ccc</c>
        <d>ddd</d>
      </b1>
      <b2>
        <e>eee</e>
        <f>fff</f>
      </b2>
    </a>
    private string GetInfoByXML(string xmlFilePath,string nodeName) // xmlFilePath是xml的文件名,nodeName是你要查询的节点的名称,就是c
            {
                document.Load(xmlFilePath);
                string result = string.Empty;
                try
                {
                    XmlNodeList nodeList = document.SelectSingleNode("a").ChildNodes;
                    if (nodeList != null && nodeList[0].ChildNodes != null)
                    {
                        foreach (XmlNode xn in nodeList[0].ChildNodes)
                        {
                            if (xn.Name == nodeName)
                            {
                                result = xn.InnerText;
                                break;
                            }
                        }
                    }
                    return result;
                }
                catch (Exception ex)
                {
                }
    }
      

  14.   

    这里有对XML完全操作的例子,仅供参考[align=center]**************************************************
    本内容使用 CSDN小秘书 回复
    每天回帖即可获得10分可用分!
    **************************************************[/align]