【发布时间】:2021-04-29 12:25:44
【问题描述】:
XML:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Company>
<Title>Seph</Title>
<Commentary>blah-blah</Commentary>
<Worker1>Bill</Worker1>
<Worker2>Fill</Worker2>
</Company>
<JobDetails>
<JobNum>1</JobNum>
<Detail1>Sport</Detail1>
<Detail2>Physical</Detail2>
</JobDetails>
<JobDetails>
<JobNum>2</JobNum>
<Detail1>Mailman</Detail1>
<Detail2>pastoral</Detail2>
</JobDetails>
<JobDetails />
</NewDataSet>
我有一个代码转换器(XML 到 CSV)的示例,但它可以在没有标题“公司”和“工作详情”的情况下工作。我需要这个标题,你能帮我改进这个代码吗?
using System;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Linq;
namespace XML_CSV
{
class Class1
{
static void Main()
{
StringBuilder sb = new StringBuilder();
string delimiter = "|";
XDocument.Load(@"C:\Users\Iuser\Desktop\Data.xml").Descendants("NewDataSet").ToList().ForEach(element => sb.Append(
element.Element("Company").Value + delimiter + //something maybe bad here
element.Element("Title").Value + delimiter +
element.Element("Commentary").Value + delimiter +
element.Element("Worker1").Value + delimiter +
element.Element("Worker2").Value + delimiter +
element.Element("JobDetails").Value + delimiter + //something maybe bad here
element.Element("Detail1").Value + delimiter +
element.Element("Detail2").Value + "\r\n"));
StreamWriter sw = new StreamWriter(@"C:\Users\Iuser\Desktop\DataCSV.csv");
sw.WriteLine(sb.ToString());
sw.Close();
}
}
}
可能代码不起作用,因为视觉认为“Company”和“JobDetails”是不同的表。 这应该看起来像这样(在 CSV 中): Company JobDetails
它应该在一个 CSV 文件中。
输出文本:
Title,Commentary,Worker1,Worker2
Seph,blah-blah,Bill,Fill
JobNum,Detail1,Detail2
1,Sport,Physical
2,Mailman,pastoral
【问题讨论】:
-
你能举一些例子说明输出的样子,以及你认为它应该是什么样的吗?
-
我添加了输出示例;
-
请编辑您的帖子并将所需的输出添加为文本。
-
如何使用 XSLT?
-
请澄清您的输出。它只有一行吗?
标签: c# xml csv converters