【问题标题】:Convert XML response to .CSV file将 XML 响应转换为 .CSV 文件
【发布时间】:2011-01-25 11:29:54
【问题描述】:

我有以下代码,

我正在向 Web 服务发送一组数据,来自 Web 服务的响应当前显示在 Web 表单中,如下所示。

private void Form1_Load(object sender, EventArgs e)
    {
        int ASent;
        int CSent;
        webservice.Results returned = convert();
        txtResult.Text = System.Convert.ToString(returned.status);
        txtMoreRes1.Text = returned.errorDetails[0].errorDetails;
        txtMoreRes2.Text = returned.errorDetails[1].errorDetails;
        txtMoreRes3.Text = returned.errorDetails[2].errorDetails;
        txtMoreRes4.Text = returned.errorDetails[3].errorDetails;
        date.Text = System.Convert.ToString(DateTime.Today);
        time.Text = System.Convert.ToString(DateTime.Now.TimeOfDay);
                }

我现在需要将“返回”的结果从 xml 响应转换为 .csv 文件。然后让代码将该 .csv 保存到 C 驱动器上的某个位置。如何更改我的代码来执行此操作?

感谢您的宝贵时间!

【问题讨论】:

  • 不是每个 XML 都可以转换为 CSV
  • 嗯..哪个网络服务..你的问题没有意义,你指的是其他问题,然后请添加一个链接..
  • 我不认为这是必要的,因为此表单显示返回的响应,我需要做的就是让返回的响应不加载到 Web 表单中,而只是变成一个 csv 文件。

标签: c# xml web-services csv


【解决方案1】:
 StringBuilder SbCSV = new StringBuilder();
            int ActualSent;
            int CommitmentSent;
            webservice.summaryResults returned = convert(out ActualSent, out CommitmentSent);
            //txtResult.Text = System.Convert.ToString(returned.status);
            SbCSV.Append(System.Convert.ToString(returned.status));
            //txtMoreRes1.Text = returned.errorDetails[0].errorDetails;
            SbCSV.Append("," + returned.errorDetails[0].errorDetails);
            //txtMoreRes2.Text = returned.errorDetails[1].errorDetails;
            SbCSV.Append("," + returned.errorDetails[1].errorDetails);
            // Similary ...
            txtMoreRes3.Text = returned.errorDetails[2].errorDetails;
            txtMoreRes4.Text = returned.errorDetails[3].errorDetails;
            actualSum.Text = System.Convert.ToString(returned.actualSum);
            commitmentSum.Text = System.Convert.ToString(returned.commitmentSum);
            date.Text = System.Convert.ToString(DateTime.Today);
            time.Text = System.Convert.ToString(DateTime.Now.TimeOfDay);
            actualsumsent.Text = ActualSent.ToString();
            commitmentsumsent.Text = CommitmentSent.ToString();
            errorposition1.Text = System.Convert.ToString(returned.errorDetails[0].errorPosition);
            errorposition2.Text = System.Convert.ToString(returned.errorDetails[1].errorPosition);
            errorposition3.Text = System.Convert.ToString(returned.errorDetails[2].errorPosition);
            errorposition4.Text = System.Convert.ToString(returned.errorDetails[3].errorPosition);

            TextWriter Tw = new StreamWriter("Your_FilePath_Name.csv");
            Tw.Write(SbCSV.ToString());
            Tw.Close();
            Tw.Dispose();

【讨论】:

  • 我会给它一个 bash @Pratik 如果我可以让它工作,我会'打勾'感谢输入!
  • 唯一的问题是这似乎不起作用,我无法弄清楚为什么,我已将应用程序称为表单,我认为它仍在尝试作为表单加载,因此此代码不是工作吗?
【解决方案2】:

您也可以使用FileHelpers 来执行此操作。 您必须创建一个名为 MyClass 的类,其属性与您的 .csv 格式匹配(每列 = 一个属性) 您构建此类对象的列表并使用 FileHelper 以这种方式转换为 csv:

FileHelperEngine engine = new FileHelperEngine(typeof(MyClass));

MyClass[] res = null; //Fill your array here from your code.

// To Write Use:
engine.WriteFile("FileOut.txt", res);

【讨论】:

    【解决方案3】:

    您也可以使用XML Transformation 来执行此操作。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 2015-10-28
      • 2014-11-22
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多