亚里士多缺德 2016-04-28 01:31 采纳率: 0%
浏览 3571

C# 如何将纯文本TXT转换成XML格式

想做一个小的demo 学习中遇到一点小问题 请大神指导
通过一个简单的转换 不求转换精准

  • 写回答

2条回答 默认 最新

  • Chavez_cn 2016-04-28 03:11
    关注

    public partial class FrmTxtXml : Form
    {
    String txtContent = String.Empty;
    //
    public FrmTxtXml()
    {
    InitializeComponent();
    }

        //打开txt文件
        private void toolStripOpen_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog fileDialog = new OpenFileDialog())
            {
                fileDialog.Filter = "文本文件(*.txt)|*.txt";
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    String fileName = fileDialog.FileName;
                    if (!String.IsNullOrEmpty(fileName))
                    {
                        using (StreamReader st = new StreamReader(fileName, System.Text.Encoding.GetEncoding("GBK")))
                        {
                            txtContent = st.ReadToEnd();
                            //读取txt文件到txtTXT文本框
                            this.txtTXT.Text = txtContent;
                            st.Close();
                        }
                    }
                }
            }
        }
    
        //将txt文件内容转换成xml格式内容
        private void toolStripConvert_Click(object sender, EventArgs e)
        {
            try
            {
                //将txt内容分解为行数组
                String[] lines = this.txtTXT.Text.Split(new string[] { "/r/n" }, StringSplitOptions.None);
                String[] heads = null;
                if (lines != null && lines.Length > 0)
                {
                    //读取第一行数据,该行数据为xml文件的节点描述数据
                    heads = lines[0].Split(new string[] { "/t" }, StringSplitOptions.None);
                    //MessageBox.Show(heads.Length.ToString() + " " + heads[0]);
                }
                //
                StringBuilder sb = new StringBuilder();
                sb.Append("<?xml version=/"1.0/" encoding=/"gbk/"?>").Append(Environment.NewLine).Append("<dataRoot>").Append(Environment.NewLine);
                //生成xml节点
                for (int i = 1; i < lines.Length; i++)
                {
                    if (lines[i] == null || lines[i].Trim().Length < 1)
                        continue;
                    String[] info = lines[i].Split(new string[] { "/t" }, StringSplitOptions.None);
                    sb.Append(createNode(heads, info));
                }
                sb.Append("</dataRoot>");
                this.txtXML.Text = sb.ToString();
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
    
        //产生xml节点
        private String createNode(String[] head, String[] info)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<record>").Append(Environment.NewLine);
            for (int i = 0; i < head.Length; i++)
            {
                sb.Append("<" + head[i] + ">" + info[i] + "</" + head[i] + ">").Append(Environment.NewLine);
            }
            sb.Append("</record>").Append(Environment.NewLine);
            return sb.ToString();
        }
    
        //将txtXML文本框内容另存为xml文件
        private void toolStripSaveas_Click(object sender, EventArgs e)
        {
            try
            {
                String fileName = "";
                using (SaveFileDialog fileDialog = new SaveFileDialog())
                {
                    fileDialog.Filter = "XML数据文件(*.xml)|*.xml";
                    if (fileDialog.ShowDialog() == DialogResult.OK)
                    {
                        fileName = fileDialog.FileName;
                        if (!String.IsNullOrEmpty(fileName))
                        {
                            FileStream fs = new FileStream(fileName, FileMode.Create);
                            //获得字节数组
                            byte[] data = System.Text.Encoding.GetEncoding("GBK").GetBytes(this.txtXML.Text);
                            //开始写入
                            fs.Write(data, 0, data.Length);
                            //清空缓冲区、关闭流
                            fs.Flush();
                            fs.Close();
                        }
                    }
                }
                MessageBox.Show(String.Format("文件成功保存到{0}", fileName));
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 spring后端vue前端
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题