RT,XML文件有3个Table.
XML文件的目录形式为:F:\\vs2005\\陈志兵\\Uri\\20010814\\0001\\*.xml
小D感觉一下代码过于麻烦,很粗糙
问题:document.DataSet.ReadXml可以批量自动赋值給DataSet吗,不用自己判断(红色字体可否省略掉)代码如下: private void frmFilterSample_Load(object sender, EventArgs e)
{
DataSet ReadXml = new DataSet();
ReadXml = GetFirstFolders("F:\\vs2005\\陈志兵", ReadXml);
}
//搜索F:\\vs2005\\陈志兵下的文件夹
private DataSet GetFirstFolders(string path, DataSet ReadXML)
{
string[] folders = Directory.GetDirectories(path);
foreach (string folder in folders)
{
ReadXML = GetSecondFolders(folder, ReadXML);
//递归调用搜索第二层文件夹
GetFirstFolders(folder, ReadXML);
}
return ReadXML;
}
//搜索F:\\vs2005\\陈志兵\\20090822\\下的文件
private DataSet GetSecondFolders(string path, DataSet ReadXML)
{
string[] folders = Directory.GetDirectories(path);
foreach (string folder in folders)
{
ReadXML = GetXmlFiles(folder, ReadXML);
//递归调用搜索第三层文件夹中的文件
GetSecondFolders(folder, ReadXML);
}
return ReadXML;
}
//继续往下级目录搜索
private DataSet GetXmlFiles(string path, DataSet ReadXML)
{
string[] files = Directory.GetFiles(path, "result.xml");
foreach (string file in files)
{
ReadXML = ReadXmlFiles(file, "result", ReadXML);
}
return ReadXML;
}
//读取XML文件
private static DataSet ReadXmlFiles(string descDirectory, string fileName, DataSet ReadXML)
{
XmlDataDocument document = new XmlDataDocument();
//document.DataSet.ReadXml(descDirectory + @"\" + fileName + ".xml");
document.DataSet.ReadXml(descDirectory);
if (document.DataSet.Tables[0].Rows.Count > 0 && ReadXML.Tables.Count>0)
{
if (ReadXML.Tables.Count > 0)
{
string a0 = ReadXML.Tables[0].TableName;
string a1 = ReadXML.Tables[1].TableName;
string a2 = ReadXML.Tables[2].TableName;
ReadXML.Tables[0].Rows.Add(document.DataSet.Tables[0]);
}
//ReadXML.Tables[1].Rows.Add(document.DataSet.Tables[0]);
//ReadXML.Tables[2].Rows.Add(document.DataSet.Tables[0]);
}
else
{
ReadXML = document.DataSet;
} return ReadXML;
}
}
XML文件的目录形式为:F:\\vs2005\\陈志兵\\Uri\\20010814\\0001\\*.xml
小D感觉一下代码过于麻烦,很粗糙
问题:document.DataSet.ReadXml可以批量自动赋值給DataSet吗,不用自己判断(红色字体可否省略掉)代码如下: private void frmFilterSample_Load(object sender, EventArgs e)
{
DataSet ReadXml = new DataSet();
ReadXml = GetFirstFolders("F:\\vs2005\\陈志兵", ReadXml);
}
//搜索F:\\vs2005\\陈志兵下的文件夹
private DataSet GetFirstFolders(string path, DataSet ReadXML)
{
string[] folders = Directory.GetDirectories(path);
foreach (string folder in folders)
{
ReadXML = GetSecondFolders(folder, ReadXML);
//递归调用搜索第二层文件夹
GetFirstFolders(folder, ReadXML);
}
return ReadXML;
}
//搜索F:\\vs2005\\陈志兵\\20090822\\下的文件
private DataSet GetSecondFolders(string path, DataSet ReadXML)
{
string[] folders = Directory.GetDirectories(path);
foreach (string folder in folders)
{
ReadXML = GetXmlFiles(folder, ReadXML);
//递归调用搜索第三层文件夹中的文件
GetSecondFolders(folder, ReadXML);
}
return ReadXML;
}
//继续往下级目录搜索
private DataSet GetXmlFiles(string path, DataSet ReadXML)
{
string[] files = Directory.GetFiles(path, "result.xml");
foreach (string file in files)
{
ReadXML = ReadXmlFiles(file, "result", ReadXML);
}
return ReadXML;
}
//读取XML文件
private static DataSet ReadXmlFiles(string descDirectory, string fileName, DataSet ReadXML)
{
XmlDataDocument document = new XmlDataDocument();
//document.DataSet.ReadXml(descDirectory + @"\" + fileName + ".xml");
document.DataSet.ReadXml(descDirectory);
if (document.DataSet.Tables[0].Rows.Count > 0 && ReadXML.Tables.Count>0)
{
if (ReadXML.Tables.Count > 0)
{
string a0 = ReadXML.Tables[0].TableName;
string a1 = ReadXML.Tables[1].TableName;
string a2 = ReadXML.Tables[2].TableName;
ReadXML.Tables[0].Rows.Add(document.DataSet.Tables[0]);
}
//ReadXML.Tables[1].Rows.Add(document.DataSet.Tables[0]);
//ReadXML.Tables[2].Rows.Add(document.DataSet.Tables[0]);
}
else
{
ReadXML = document.DataSet;
} return ReadXML;
}
}
//读取XML文件
private static DataSet ReadXmlFiles(string descDirectory, string fileName, DataSet ReadXML)
{
ReadXML.ReadXml(descDirectory);
}晕死,一句就搞定了
XmlDataDocument document = new XmlDataDocument();
document.DataSet.ReadXml(descDirectory);2
DataSet ReadXml = new DataSet()
ReadXML.ReadXml(descDirectory);请教下大大们,1,2有什么区别吗
http://msdn.microsoft.com/zh-cn/library/1t4362sd(VS.80).aspx
总结了下:
1.如果希望用表,列和行表示数据,DataSet可能更为方便,想用树的节点来表示相同的数据的话,
一般用XmlDataDocumnet可能要更好
2.XmlDataDocumnet里包含一个dataset的成员变量,所以在xmldatadocument里访问datanse很容易,
例如dataset.tables["name"].rows[0][0]一样
3.dataset用于绑定多些,XmlDataDocumnet一般用于解析XML.
4.ADO.NET DataSet 为您提供了数据的关系表示形式。若要实现分层数据访问,可以使用 .NET
Framework 中的可用 XML 类。以前,数据的这两种表示形式是单独使用的。
不过,.NET Framework 允许分别通过 DataSet 对象和 XmlDataDocument 对象对数据的关系
和分层表示形式进行实时、同步的访问。附:第四点是CSDN上的,这里的分层数据访问不是很明白,感觉XmlDataDocument 解析XML后的
各类节点比较好理解,类似于树型结构,而DataSet象多维数组