对XML文件进行合并 并读入到DataSet
来源:互联网 发布:网络进货渠道有哪些 编辑:程序博客网 时间:2024/05/16 10:19
先定义XML的结构信息如下
/// <summary>
/// 创建DataSet结构,与XML文档结构保持一致
/// </summary>
/// <returns>数据集</returns>
private DataSet createDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Table1");
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));
dt.Columns.Add("Column3", typeof(string));
ds.Tables.Add(dt);
dt = new DataTable("Table2");
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));
dt.Columns.Add("Column3", typeof(string));
dt.Columns.Add("Column4", typeof(string));
dt.Columns.Add("Column5", typeof(string));
ds.Tables.Add(dt);
return ds;
}
/// <summary>
/// 创建 XML文件
/// </summary>
/// <param name="path">创建路径</param>
private void createXMLFile(string path)
{
if (File.Exists(path)) //判断文件是否已存在
{
if (DialogResult.Yes == MessageBox.Show("合并文档已存在!是否要替换原有数据?否则将在原有数据的基础上进行追加", "提示", MessageBoxButtons.YesNo))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path);
XmlNode root = xmlDoc.DocumentElement; //获取根节点
root.RemoveAll(); //清除根节点下的全部信息
xmlDoc.Save(path); //保存
}
return;
}
XmlTextWriter xmlWriter = new XmlTextWriter(path, Encoding.UTF8);//创建一个xml文档
xmlWriter.Formatting = Formatting.Indented; //设置缩进
xmlWriter.WriteStartDocument();
//创建根节点
xmlWriter.WriteStartElement("data");
////新建节点
//xmlWriter.WriteStartElement("日期");
////写节点内容
//xmlWriter.WriteString(System.DateTime.Now.Year + "-" + System.DateTime.Now.Month + "-" + System.DateTime.Now.Day);
//xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.Close();
}
/// <summary>
/// 对 xml文件进行合并,并另存为一个新的xml文件
/// </summary>
/// <param name="subFile">要参与合并的xml文件路径</param>
/// <param name="targetFile">合并后的新xml文件路径</param>
private void MergeXmlFiles(string subFile, string targetFile)
{
XmlDocument subDoc = new XmlDocument();
XmlDocument targetDoc = new XmlDocument();
subDoc.Load(subFile); //参与合并的xml文档
targetDoc.Load(targetFile); //合并后的xml文档
//获取合并文档的根节点
XmlNode targetRoot = targetDoc.DocumentElement;
//获取要合并的xml文档根节点下的所有子节点信息
XmlNodeList nodeList = subDoc.SelectSingleNode("data").ChildNodes;
foreach (XmlNode xn in nodeList)
{
//非同一xml文档的节点,在添加之前必须先导入(本人实在是太喜欢这句了~~
targetRoot.AppendChild(targetDoc.ImportNode(xn, true));
}
targetDoc.Save(targetFile);//保存到合并文档
}
关键代码段:
string targetFilePath = string.Empty;
FolderBrowserDialog fBD = new FolderBrowserDialog();
if (fBD.ShowDialog() == DialogResult.OK)
{
string folderPath = fBD.SelectedPath;
string[] files = Directory.GetFiles(folderPath, "*.xml"); //获取所有要参与合并的xml文件
if (files.Length == 0)
{
MessageBox.Show("您所选的文件夹下没有XML文件", "提示");
return;
}
//指定合并后的文档路径
targetFilePath = folderPath + @"/mergeResult.xml";
//创建XML合并文档
createXMLFile(targetFilePath);
int fileCount = 0; //统计参与合并的XML文件数
//对提取出的所有xml文件进行合并
foreach (string file in files)
{
if (!file.Equals(targetFilePath)) //排除可能存在的合并文档
{
fileCount++;
MergeXmlFiles(file, targetFilePath);
}
}
//提示成功合并
MessageBox.Show(string.Format("您所选的文件夹下共有{0}个XML文件,成功合并!", fileCount), "提示");
}
DataSet ds = createDataSet();
//把XML文件数据读入到DataSet相应的表结构中
ds.ReadXml(targetFilePath);
- 对XML文件进行合并 并读入到DataSet
- 对XML文件进行合并 并读入到DataSet
- 将.xsd文件嵌入资源 读取嵌入文件 并 读入到DataSet架构
- XML字符串读入DataSet
- XML字符串读入DataSet
- 如何将字符串变量读入XML,再读到DATASET?
- 利用map容器进行读入文件并对响应的字符进行转换并输出转换后的字符
- 将图片读入到Dom中,并将其存为xml文件
- 将图片读入到Dom中,并将其存为xml文件
- 将图片读入到Dom中,并将其存为xml文件
- 对文件信息进行合并
- 如何将DATASET的数据导出到XML文件,并直接下载
- XML文件导入、导出到 DataSet
- XML文件导入、导出到 DataSet
- DataSet数据集导出到Xml文件
- XML文件导入、导出到 DataSet
- dom4j对多个xml进行合并
- 将图片文件读入字符串并进行base64加密
- jQuery常见问题整理
- Python如何进行中文注释
- 走向成功:成功人士必备的五大EQ
- frame,iframe,frameset用法和区别
- IE与firefox下的css区别
- 对XML文件进行合并 并读入到DataSet
- J2ME-定时器(TimerTask)使用及初探
- STL容器用法之List(转载)
- 将“Drag a column header to group by that column”去掉
- Java 通过 JNA (Java Native Access) 获取、设置 Windows 操作系统的文件创建时间、文件修改时间、文件访问时间
- 2010 最牛B的个性签名
- 基于.Net的单点登录(SSO)解决方案
- JQUERY图片轮转的改进版本
- [ORACLE] ORA-01555的异常分析 ,都是大事务惹的祸