C# s(Path.Combine(basePath,“../../…”,@“input.csv”); var xmlTree=新的XElement(“TopElement”); foreach(行中的var行) { AddContentForEachLine(行,参考xmlTree); } Save(Path.Combine(basePath,../../....,@“output.xml”); } } }
运行代码后,结果如下:C# s(Path.Combine(basePath,“../../…”,@“input.csv”); var xmlTree=新的XElement(“TopElement”); foreach(行中的var行) { AddContentForEachLine(行,参考xmlTree); } Save(Path.Combine(basePath,../../....,@“output.xml”); } } },c#,C#,运行代码后,结果如下: A. B C D E F G H 参考资料: 将元素、属性和节点添加到XML树(C#)| Microsoft文档 到目前为止,您尝试了什么?什么不起作用?请展示一些源代码…发布您到目前为止的代码,并指出您认为它不起作用的原因。XML块不是很有用。您应该解释您的输入格式和所需的输出格式,以及您遇到困难的地方,或者这可能会被关闭。我们可以看到CSV中的几行和标题吗?这可能是复制/粘贴错误,但这甚至不是有效的XML(查看到目前为止您尝试了什么?什么不起作用?请展示一些源代码
A.
B
C
D
E
F
G
H
参考资料:
将元素、属性和节点添加到XML树(C#)| Microsoft文档
到目前为止,您尝试了什么?什么不起作用?请展示一些源代码…发布您到目前为止的代码,并指出您认为它不起作用的原因。XML块不是很有用。您应该解释您的输入格式和所需的输出格式,以及您遇到困难的地方,或者这可能会被关闭。我们可以看到CSV中的几行和标题吗?这可能是复制/粘贴错误,但这甚至不是有效的XML(查看
到目前为止您尝试了什么?什么不起作用?请展示一些源代码…发布您到目前为止的代码,并指出您认为它不起作用的原因。XML块不是很有用。您应该解释您的输入格式和所需的输出格式,以及您遇到的困难,或者这可能会被关闭。我们可以看到一个CSV中的几行和标题?可能是复制/粘贴错误,但这甚至不是有效的XML(请参见
<CARS>
<NAME="amk">
<CAR>
<id>A1</id>
<start>12.00</start>
<end>11.59</end>
<place>PARK</place>
<day>DAY</day>
<letter>abc</letter>
<number>77</number>
</CAR>
<CAR>
<id>A2</id>
<start>01.00</start>
<end>12.59</end>
<place>garden</place>
<day>night</day>
<letter>abc</letter>
<number>27</number>
<length>2.15M</length>
<amount>12</amount>
</CAR>
<CAR>...</CAR>
<CAR>...</CAR>
<NAME="bbk">
<CAR>
<id>B1</id>
<start>23.59</start>
<end>11.59</end>
<place>Rooftop</place>
<day>DAY</day>
<letter>abc</letter>
<number>34</number>
</CAR>
<CAR>
<id>B4</id>
<start>01.00</start>
<end>02.00</end>
<place>garden</place>
<day>Day</day>
<letter>abc</letter>
<number>27</number>
<length>2.00M</length>
<amount>2</amount>
</CAR>
<CAR>...</CAR>
<CAR>...</CAR>
</NAME>
</CARS>
public static void ConvertCsvToXML()
{
String[] FileContent = File.ReadAllLines(@"C:\test.csv");
String XMLNS = "";
XElement Inv = new XElement("CARS",
from AREA in FileContent
let fields = AREA.Split(',')
select new XElement("Area", fields[0]),
from CAR in FileContent
let fields = CAR.Split(',')
select new XElement("Car",
new XElement("id", fields[1]),
new XElement("start", fields[2]),
new XElement("end", fields[3]),
new XElement("place", fields[4]),
new XElement("day", fields[5]),
new XElement("letter", fields[6]),
new XElement("number", fields[7]),
new XElement("length", fields[8]),
new XElement("amount", fields[9])
)
);
File.WriteAllText(@"C:\testCSV.xml", XMLNS + Inv.ToString());
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Linq;
namespace TestProgram
{
static class Program
{
// NET4 has this in System.IO.File
private static IEnumerable<string> ReadAllLines(string fname)
{
using (var r = new StreamReader(fname))
{
var line = r.ReadLine();
while (null != line)
{
yield return line;
line = r.ReadLine();
}
}
}
private static string[] CsvFields(string line, char[] delim)
{
return null==line
? null
: line.Split(delim, StringSplitOptions.None);
}
public static IEnumerable<T> ProjectCsv<T>(this IEnumerable<string> lines, char[] delim, Func<string[], T> projection)
{
return lines.Select(l => projection(CsvFields(l, delim)));
}
public static IEnumerable<T> ProjectCsv<T>(this IEnumerable<string> lines, char[] delim, Func<string[], int, T> projection)
{
return lines.Select((l, i) => projection(CsvFields(l, delim), i));
}
static void Main(string[] args)
{
foreach (var filename in args)
{
var csv = ReadAllLines(filename);
var delimiter = new[] { '\t' };
var headers = CsvFields(csv.First(), delimiter);
Console.WriteLine(
new XDocument(new XElement("CSV",
new XAttribute("source", filename),
csv.ProjectCsv(delimiter, (fields, linenum) =>
new XElement("Line",
new XAttribute("number", linenum),
headers.Select((caption, index) => new XElement(caption, new XText(fields[index])))
))))
);
}
Console.WriteLine("Done, press a key");
Console.ReadKey();
}
}
}
Program.exe E:\test.csv E:\test2.csv
aap noot mies
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
<CSV source="e:\test.csv">
<Line number="0">
<aap>aap</aap>
<noot>noot</noot>
<mies>mies</mies>
</Line>
<Line number="1">
<aap>1</aap>
<noot>2</noot>
<mies>3</mies>
</Line>
<Line number="2">
<aap>2</aap>
<noot>3</noot>
<mies>4</mies>
</Line>
<Line number="3">
<aap>3</aap>
<noot>4</noot>
<mies>5</mies>
</Line>
<Line number="4">
<aap>4</aap>
<noot>5</noot>
<mies>6</mies>
</Line>
<Line number="5">
<aap>5</aap>
<noot>6</noot>
<mies>7</mies>
</Line>
<Line number="6">
<aap>6</aap>
<noot>7</noot>
<mies>8</mies>
</Line>
</CSV>
Done, press a key
A,B,C
D,E,F
G,H