【问题标题】:XML to CSV in C# newbieC# 新手中的 XML 到 CSV
【发布时间】:2015-09-15 19:22:46
【问题描述】:

大家好,我需要有关此 xml 数据的帮助。

<?xml version="1.0" encoding="utf-8"?>
<xml-data xmlns="http://www.lucom.com/ffw/xml-data-1.0.xsd">
<form>catalog://Unternehmen/ust/ZM_Formular_online</form>
<instance>

<dataset id="tbl_ZM_tabelle">
  <datarow>
    <element id="knre1">AT</element>
    <element id="knre2">U18713701</element>
    <element id="umsatz_art">0</element>
    <element id="betrag">7605</element>
    <element id="zeile_m">1</element>
  </datarow>

我想通过使用 knre1、knre2 和“betrag” id 来编写 csv 数据。它总是同一个名字。 它应该是这样的

AT;U18713701;7605

我是 C# 的新手,我需要帮助。

【问题讨论】:

  • 请在您选择的搜索引擎中输入“c# convert xml to csv”,然后开始阅读大量有据可查的文章和示例代码,它们可以完全回答您的问题。
  • 到目前为止你有什么收获?
  • 我可以在我的 c# 程序中实现 csv 文件,但我需要读取 xml 文件并创建一个 csv 文件

标签: c# xml csv


【解决方案1】:

这是非常基本的:

using System.Xml.XPath;
using System.Xml.Linq;
using System.IO;

XDocument xdoc = XDocument.Load("test.xml");
StringBuilder csv = new StringBuilder();

foreach (XElement datarow in xdoc.Root.XPathSelectElements("dataset/datarow"))
{
    string knre1 = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("knre1")).First().Value;
    string knre2 = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("knre2")).First().Value;
    string betrag = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("betrag")).First().Value;

    csv.AppendLine(knre1 + "," + knre2 + "," + betrag);
}

File.WriteAllText("cvsFile.csv", csv.ToString());

【讨论】:

  • 它创建了一个文件,但它不会用 csv 文件中的 xml 元素 id 填充它
  • xdoc.Root.XPathSelectElements("dataset/datarow") 中的 XElement datarow 在这一行之后我设置了一个消息框,但它没有到达那里
  • @ofice 所以 xpath(instance/dataset/datarow) 不正确......它适用于我上面使用的示例。如果您正在使用其他东西,请更新您的问题。
【解决方案2】:
    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();


        XDocument xdoc = XDocument.Load("C:\\Users\\edvazubi\\Desktop\\ZM05.2015.xml");
        StringBuilder csv = new StringBuilder();

        foreach (XElement datarow in xdoc.Root.XPathSelectElements("instance/dataset/datarow"))
        {


            string knre1 = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("knre1")).First().Value;
            string knre2 = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("knre2")).First().Value;
            string betrag = datarow.Elements("element").Where(i => i.Attribute("id").Value.Contains("betrag")).First().Value;



            csv.AppendLine(knre1 + "," + knre2 + "," + betrag + "L");
        }

        File.WriteAllText("C:\\Users\\edvazubi\\Desktop\\CSVFile.csv", csv.ToString());

这是我现在的文件

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多