当前位置: 首页 > 知识库问答 >
问题:

如何用C#将XML文件转换为CSV文件

葛宪
2023-03-14

给我最好的方式来写代码。

如何在C#中将XML文件转换为CSV文件,只显示以下标记:

   <a:MarketingAllCardholder xmlns:b="http://schemas.datacontract.org/2004/07/ExternalClient.Data.Classes">
       <b:MarketingAllCardholderData>
          <b:CentreName>Corporate Office</b:CentreName>
          <b:Country>Austria</b:Country>
          <b:CustomerId>379</b:CustomerId>
          <b:DOB>25/02/1991</b:DOB>
          <b:Email>farah@gmail.com</b:Email>
          <b:ExpiryDate>03/01/2020 08:01</b:ExpiryDate>

       </b:MarketingAllCardholderData>
       <b:MarketingAllCardholderData>
          <b:CentreName>Corporate Office</b:CentreName>
          <b:Country>Egypt</b:Country>
          <b:CustomerId>988915</b:CustomerId>
          <b:DOB>01/03/1986</b:DOB>
          <b:Email>hesh.a.metwally@gmail.com</b:Email>
          <b:ExpiryDate>07/01/2020 11:38</b:ExpiryDate>

       </b:MarketingAllCardholderData>

输出CSV文件格式应如下所示:

共有1个答案

苏洛城
2023-03-14

基本上可以使用XMLSerializator或XSLT。

使用XmlSerializator:

public class MarketingAllCardholder{
    public MarketingAllCardholderData[] marketingAllCardholderDataList { get; set; }
}

using System.IO;
using System.Xml.Serialization;

using (FileStream fs = new FileStream(@"name.xml", FileMode.Open))
{
    XmlSerializer serializer = new XmlSerializer(typeof(MarketingAllCardholde[]));
    var data = (MarketingAllCardholder[])serializer.Deserialize(fs);
    List<string> list = new List<string>();
    foreach (var item in data)
    {
        //Add All the necessary columns here...
        //After the columns add the delimiter character -> string.Join(","....
    }
    File.WriteAllLines("D:\\csvFile.csv", list);
}

另一种方法是使用XSLT来转换它。

    null
public static string ToCSV(string xmlTextDate, string xsltFile)
{
  string result = string.Empty;
  var xpathDoc = new XPathDocument(xmlTextDate);
  var xsltTransform = new System.Xml.Xsl.XslCompiledTransform();
  xsltTransform.Load(xsltFile);

  using (MemoryStream ms = new MemoryStream())
  {
      var writer = new XmlTextWriter(ms, Encoding.UTF8);
      using (var rd = new StreamReader(ms))
      {
          var argList = new System.Xml.Xsl.XsltArgumentList();
          xsltTransform.Transform(xpathDoc, argList, writer);
          ms.Position = 0;
          result = rd.ReadToEnd();
      }
  }
  return result;
}
var csvString = ToCSV("name.xml","name.xsl");
 类似资料:
  • 问题内容: 我有一个XML文件 我必须将此XML转换为CSV文件。我听说我们可以使用XSLT进行此类操作。如何在Java中(带有/不带有XSLT)执行此操作? 问题答案: 用伪代码: 这个快速的小循环将在每行的末尾写一个逗号,但是我敢肯定您可以弄清楚如何删除它。 为了实际解析XML,我建议使用JDOM。它具有非常直观的API。

  • 问题内容: 我需要帮助来理解使用java将XML文件转换为CSV文件所涉及的步骤。这是XML文件的示例 这是生成的CSV文件。 我当时正在考虑使用DOM解析器读取xml文件。我遇到的问题是,我需要按名称指定要编码的特定元素,但我希望它能够解析它而不这样做。 Java中是否有任何工具或库可以帮助我实现这一目标。 如果我下面有这种格式的XML文件,并且想在与MSgId相同的行中添加InitgPty的值

  • 我有如下XML文件: 如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?

  • 问题内容: 我想将PDF文件转换为CSV文件。我为此使用iText库。程序运行正常,但输出格式不正确。所有数据都在csv文件的第一行中。输出应与pdf文件完全相同(表示带有换行符)。请帮忙。提前致谢。 问题答案: 您需要在每个表行之后在缓冲区中引入一个换行符’\ n’。

  • 问题内容: @Before可能会有一些重复的问题建议,我不认为可能是这种情况,请先阅读本章,我会尽量简短。标题给出了基本思路。 这是一个XML示例(案例1): 这是一个XML示例(案例2): 我从Google借用了这种XML,无论如何,我的对象并不总是相同的,有时还有像case2这样的额外元素。现在,我想从两种情况下生成这样的CSV: 这第一行是标头,它也应包含在csv中。我今天有一些有用的指向s