仅剩的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);
}
--------------------编程问答-------------------- (ˇˍˇ) 学习了 --------------------编程问答--------------------
--------------------编程问答-------------------- xml.linq
方法三 :使用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完全操作的例子,仅供参考[align=center]**************************************************
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)
{
}
}
本内容使用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
**************************************************[/align] --------------------编程问答-------------------- 好贴子,得留名。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 关注中....... --------------------编程问答-------------------- 同求一下 --------------------编程问答-------------------- linq to xml --------------------编程问答-------------------- 过来学习 19L那个不错的说.
补充:.NET技术 , C#