当前位置:编程学习 > C#/ASP.NET >>

仅剩的50分,求一个当把XML文件作为数据库使用时,C#操作XML的类(基本框架也可以(就是所有实现该功能会涉及到的方法原形))万分感谢

仅剩的50分,

求一个当把XML文件作为数据库使用时,

C#操作XML的类

注意:是把XML文件作为数据库使用时所独有的类,而不仅仅是简单操作XML的类

(基本框架也可以(就是所有实现该功能会涉及到的方法原形))

万分感谢 --------------------编程问答-------------------- net 平台提供了这个类呀!!!数据源!!!!
dataset 
dateadapter
datatable

readxml() writexml()
你看一下msdn,
把它的这一套东西看一下,没多少,而且msdn上还有例子呢
--------------------编程问答-------------------- XmlDocument --------------------编程问答-------------------- 忘了补充 要求效率 用 XmlReader 和 XmlWriter --------------------编程问答-------------------- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※以下是引用楼主 sWinZ(死蚊子) 在2007-04-24 12:04:44 的发言:
──────────────────────────────────────────
忘了补充 要求效率 用 XmlReader 和 XmlWriter
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
你要想跟操作数据库那样就一定得用XmlDocument和XPath了,XmlReader根本就满足不了你的要求 --------------------编程问答-------------------- 你要想跟操作数据库那样就一定得用XmlDocument和XPath了,XmlReader根本就满足不了你的要求
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
为什么?虚心请教 举个例子 --------------------编程问答-------------------- up --------------------编程问答-------------------- 没有Xpath你怎么做搜索之类的功能?
自己写一个解析.效率未必有XmlDocumnet高吧 --------------------编程问答-------------------- 关于搜索 MSDN里写的很明白了 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- XML文件做数据库还想要求效率
那你不如直接用XMLDB,老美的产品


关于搜索 MSDN里写的很明白了
-----------
既然MSDN里面都写明白了
那我不明白你还问什么?? --------------------编程问答-------------------- 呵呵,吵翻天了.如果XML文件读到DATASET中是一个标准的二维表就铁定用DATASET了,如果不是标准的二维表,而是表套表的情况,那么微软提供的那些类都不能用的(高效掌握ADO.NET--C#变成篇中的介绍的方法也不行).只能用 

0009(夏天以南)  

老兄说的办法,用xpath能带来最大的灵活性,而且对XML文件也能有最深的了解,对XML进行增删改等也会得心应手,再配合XmlDataDocument 或者XmlDocument等使用才是最好的办法,只有把握的了XML的本质才能真的把XML当成一种有效的数据源来使用.
说来说去最主要的还是XPath查询语言的运用以及对它的理解,虽然W3C大力推荐DataSet,前面已经说了,他只能处理标准的二维表,所以它的局限性也就很大了(或许是我对DataSet了解的不够吧) --------------------编程问答-------------------- 既然MSDN里面都写明白了
那我不明白你还问什么??
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

我要的是“类的基本框架”

换句话说,你会sqlcon等等等,但你写过的程序有限,你能保证你封的类是相对比较完整的么?

即使以后可以二次开发,

但为什么第1次不尽量写好一点呢

我的目的就是这个 --------------------编程问答-------------------- 呵呵,吵翻天了.如果XML文件读到DATASET中是一个标准的二维表就铁定用DATASET了,如果不是标准的二维表,而是表套表的情况,那么微软提供的那些类都不能用的(高效掌握ADO.NET--C#变成篇中的介绍的方法也不行).只能用 

0009(夏天以南)  

老兄说的办法,用xpath能带来最大的灵活性,而且对XML文件也能有最深的了解,对XML进行增删改等也会得心应手,再配合XmlDataDocument 或者XmlDocument等使用才是最好的办法,只有把握的了XML的本质才能真的把XML当成一种有效的数据源来使用.
说来说去最主要的还是XPath查询语言的运用以及对它的理解,虽然W3C大力推荐DataSet,前面已经说了,他只能处理标准的二维表,所以它的局限性也就很大了(或许是我对DataSet了解的不够吧)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
wangchao1982(飘零一剑)说的也很有道理

我是想能不能在达成目的的情况下

最大提升代码的执行效率

PS:上面的帖子没说完,我的目的是综合大家的经验,写一个相对比较完整的类,而省去二次开发的时间与更改代码后,项目也要随之更改的弊端 --------------------编程问答-------------------- http://www.codeproject.com/cs/database/xmlclient.asp
这个不完善,但框架有了 --------------------编程问答-------------------- 给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);
        }
--------------------编程问答-------------------- (ˇˍˇ) 学习了 --------------------编程问答--------------------

方法三 :使用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

--------------------编程问答-------------------- xml.linq
这个东西很好 --------------------编程问答--------------------

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)
            {
            }
}

--------------------编程问答-------------------- 学习了! --------------------编程问答-------------------- 这里有对XML完全操作的例子,仅供参考[align=center]**************************************************
本内容使用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
**************************************************[/align] --------------------编程问答-------------------- 好贴子,得留名。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 关注中....... --------------------编程问答-------------------- 同求一下 --------------------编程问答-------------------- linq to xml --------------------编程问答-------------------- 过来学习 19L那个不错的说.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,