1. <?xml version="1.0" encoding="utf-8"?>
  2. <bocb2e>
  3. <head />
  4. <trans>
  5. <trn-b2e0035-rq>
  6. <b2e0035-rq>
  7. <ibknum>11111</ibknum>
  8. <actacn>111</actacn>
  9. <type>2001</type>
  10. <datescope>
  11. <from>20150320</from>
  12. <to>20150320</to>
  13. </datescope>
  14. <amountscope>
  15. <from>0</from>
  16. <to>100</to>
  17. </amountscope>
  18. <begnum />
  19. <recnum />
  20. <direction>0</direction>
  21. </b2e0035-rq>
  22. </trn-b2e0035-rq>
  23. </trans>
  24. </bocb2e>

该段是一个XML代码,现在我们要做的是将以下的TXT文件转化为上述格式,TXT格式如下:

ibknum|actacnc|type |datescope_from|datescope_to|direction
1111   |111     |2002|20020214      |20020214   |0

首先,有两个路径,分别是读取路径和保存路径,downfolder和savefolder。我们的txt是保存在ftp服务器上的,这一点我们下一篇文章会讲述,怎么从ftp上下载一个文件。

现在我们直接从savefolder开始,也就是已经下载好的文件夹。

下面的方法现将txt转化为一个datatable,然后转换为list

  1. private DataTable B2eRqTxtToDt(string txtpath,string strErrMsg="",string encodingCode = "GB2312", string strSplit = "|")
  2. {if(txtpath.IndexOf("ftp")>=){
  3. //创建ftp请求信息
  4. var ftpRequest = new FtpClient(ftpUser, ftpPassword);
  5. string savePath = GetDataFileSavePath();
  6. ftpRequest.DownloadFile(savePath, txtpath, true);
  7. }
  8. //read first line
  9. StreamReader objReader = new StreamReader(savePath, Encoding.GetEncoding(encodingCode));
  10. string sLine = objReader.ReadLine();
  11. objReader.Close();
  12. //all column's header
  13. string[] ColumnHeaders = sLine.ToString().Trim().Split(strSplit).Select(q => q.Trim()).ToArray();
  14. // to datatable
  15. //直接取datatable
  16. DataTable dt = TxtService.TextFileLoader(savePath, "txt", ColumnHeaders, out strErrMsg, encodingCode, strSplit);
  17. return dt;
  18. }
  19.  
  20. private List<RqList> B2eRqDtToLs(DataTable dt)
  21. {
  22. var date = DateTime.Now.AddDays(-).Date;
  23. List<RqList> rqlist = new List<RqList>();
  24. for (int i = ; i < dt.Rows.Count; i++)
  25. {
  26. RqList rqls = new RqList();
  27. b2e0035_rq b2erq = new b2e0035_rq();
  28. b2erq.ibknum = dt.Rows[i][].ToString();
  29. b2erq.actacn = dt.Rows[i][].ToString();
  30. b2erq.type = "";
  31. b2erq.datescope_from = date.Date;
  32. b2erq.datescope_to = date.Date;
  33. b2erq.amountscope_from = null;
  34. b2erq.amountscope_to = null;
  35. b2erq.begnum = null;
  36. b2erq.recnum = null;
  37. b2erq.direction = "";
  38. #region //这几句是读取txt文件中的.另外还有string转换为DateTime类型的。
  39. b2erq.type = dt.Rows[i][].ToString();
  40. b2erq.datescope_from = DateTime.Parse(dt.Rows[i][].ToString());
  41. #endregion
  42. rqls.head = null;
  43. rqls.b2e0035_rq = b2erq;
  44. rqlist.Add(rqls);
  45. }
  46. return rqlist;
  47. }

将txt转化为list之后,借助写XML方法可以将其写入XML中。

  1. public void WriteToXML(string ibknum,string actacn,string path)
  2. {
  3. //string path = @"C:\Users\zuomeiyan\XMLRequest.xml";
  4. XmlTextWriter xtw = new XmlTextWriter(path, UTF8Encoding.UTF8);
  5. var date = DateTime.Now.AddDays(-).Date;
  6. try
  7. {
  8. xtw.Formatting = Formatting.Indented;
  9. xtw.WriteStartDocument();
  10. xtw.WriteStartElement("bocb2e");
  11.  
  12. ////head
  13. xtw.WriteStartElement("head");
  14. xtw.WriteEndElement();
  15. //交易数据块
  16. xtw.WriteStartElement("trans");
  17. xtw.WriteStartElement("trn-b2e0035-rq");
  18. xtw.WriteStartElement("b2e0035-rq");
  19. xtw.WriteElementString("ibknum", ibknum);
  20. xtw.WriteElementString("actacn", actacn);
  21. xtw.WriteElementString("type", "");
  22. xtw.WriteStartElement("datescope");
  23. xtw.WriteElementString("from", date.Date.ToString("yyyyMMdd"));
  24. xtw.WriteElementString("to", date.Date.ToString("yyyyMMdd"));
  25. xtw.WriteEndElement();
  26. xtw.WriteStartElement("amountscope");
  27. xtw.WriteElementString("from", null);
  28. xtw.WriteElementString("to", null);
  29. xtw.WriteEndElement();
  30. xtw.WriteElementString("begnum", null);
  31. xtw.WriteElementString("recnum", null);
  32. xtw.WriteElementString("direction", "");
  33. xtw.WriteEndElement();
  34. xtw.WriteEndElement();
  35. xtw.WriteEndElement();
  36. xtw.WriteEndElement();
  37. xtw.WriteEndDocument();
  38. }
  39. catch { }
  40. finally
  41. {
  42. xtw.Flush();
  43. xtw.Close();
  44. xtw.Dispose();
  45. }
  46. }

这样我们就完成了将一个TXT文件转化为XML格式。

(3)TXT转为XML的更多相关文章

  1. Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML

    同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ...

  2. BIP_开发案例07_将原有Report Builer报表全部转为XML Publisher形式(案例)

    2014-05-31 Created By BaoXinjian

  3. 网站robots.txt & sitemap.xml

    1. 如何查看网站的robots.txt 网址/robots.txt, 比如小米  https://www.mi.com/robots.txt sitemap.xml

  4. solr6.6 导入 文本(txt/json/xml/csv)文件

    参照:solr6.6 导入 pdf文件 重点就是三个配置文件 1.建立的data-config.xml 内容如下: <dataConfig> <dataSource name=&qu ...

  5. Java 将Word转为XML,XML转为Word的方法

    本文介绍将Word和XML文档进行双向互转的方法.转换时,Word支持.docx/.doc等格式. 代码环境如下: Word测试文档:.docx或.doc 编译环境:IntelliJ IDEA JDK ...

  6. C# 将HTML转为XML

    本文以C#及VB.NET后端程序代码示例展示如何将HTML转为XML文件.转换时,调用Word API -Free Spire.Doc for .NET 提供的文档加载方法及文档保存的方法来实现.转换 ...

  7. Java 将HTML转为XML

    本文介绍如何通过Java后端程序代码来展示如何将html转为XML.此功能通过采用Word API- Free Spire.Doc for Java 提供的Document.saveToFile()方 ...

  8. Java 将Excel转为XML

    可扩展标记语言(XML)文件是一种标准的文本文件,它使用特定的标记来描述文档的结构以及其他特性.通常,我们可以通过格式转换的方式来得到XML格式的文件.本文,将通过Java代码介绍如何实现由Excel ...

  9. 使用php将数组转为XML

    <?php class Array_to_Xml { private $version = '1.0'; private $encoding = 'UTF-8'; private $root = ...

随机推荐

  1. 项目文件包含 ToolsVersion="12.0" 设置,而此版本的 MSBuild 不支持该工具版本

    解决方法: 右键点击你的项目,选择属性,再点击配置属性中的常规,常规中有个平台工作集,把V120改成V100,点击应用即可.

  2. 【python】 开始第一个项目

    根据这篇文章开始上手 http://www.oschina.net/translate/the-flask-mega-tutorial-part-i-hello-world 再加点东西 如果你的环境是 ...

  3. ThinkPHP/Common/extend.php

    <?php // +---------------------------------------------------------------------- // | ThinkPHP [ ...

  4. 设置NODE_ENV=production

    NodeJS - Express 4.0下设置环境变量NODE_ENV=production,并不是修改文件的配置信息,而是通过命令行来实现. 首先在命令行下进入项目的目录,然后先后执行如下命令: s ...

  5. c语言函数指针的理解与使用

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun ...

  6. WPF解析TTF 字体

    偶遇需要自己解析 TTF 字体并显示,此做... using System; using System.Collections.Generic; using System.Drawing.Text; ...

  7. Winform 文件控件 - 转

    1. OpenFileDialog private void openFileDialogBTN_Click(object sender, System.EventArgs e) { OpenFile ...

  8. C# 越来越复杂了

    自从三年前来到现在的公司以后,基本上不怎么使用.NET进行开发了.但最近因为公司有个CRM的项目,所以只有重新检起.NET进行开发. 因为近3年没有搞.NET的开发了,因此也不敢乱整个框架,在看了一周 ...

  9. 1458: 士兵占领 - BZOJ

    Description 有一个M * N的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵.我们称这些士兵占领了整个棋盘当满足第i行至少放 ...

  10. BZOJ 3436: 小K的农场 差分约束

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3436 题解: 裸的差分约束: 1.a>=b+c  ->  b<=a-c ...