xml 파일을 csv 파일로 변환하려고합니다. xml 파일을 읽고 구문 분석하고 csv로 변환하는 방법은 무엇입니까? xml을 csv로 변환하는 패키지가 있습니까?
코드를 작성하는 가장 좋은 방법을주세요.
다음 태그 만 표시하여 XML 파일을 C #의 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>[email protected]</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>[email protected]</b:Email>
<b:ExpiryDate>07/01/2020 11:38</b:ExpiryDate>
</b:MarketingAllCardholderData>
출력 CSV 파일 형식은 다음과 같아야합니다.
Title, FirstName, LastName, DOB, Email, Country, Token, OriginalBalance, ExpiryDate Mr, wasim, warsi, 19 / 01 / 1990, wasim.warsi @ flcard.com, 인도, 384176,500,14 / 11 / 2019 05 : 2018.11.31 05 : 33,16.34
기본적으로 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를 사용하여 변환하는 것입니다.
여기에 다음 단계가 있습니다.
다음 방법을 사용하십시오.
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");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다