2010-05-04 3 views
0

XML 컨텐트 인 문자열 모음이 있습니다. 내 컬렉션을 반복하고 사용자가 다운로드 할 수 있도록 스트림하기 위해 CSV 파일을 작성하려고합니다 (때로는 컬렉션에 수백 개가 될 수 있음). 이것은 내 루프입니다.C#에서 하나의 CSV 파일로 XML 파일을 변환하려면 어떻게해야합니까?

foreach (string response in items.Responses) 
{ 
    string xmlResponse = response; 

    //BUILD CSV HERE 
} 

이것은 내 반복 내용 (xmlResponse)에 대한 XML 내용입니다. "속성"속성을 포함하여 플랫 파일에 저장하려고합니다.

<?xml version="1.0"?> 
<response> 
    <properties id="60375c90-9dd7-400f-aafb-a8726df409a9" name="Account Request" date="Thursday, March 04, 2010 2:14:07 PM" page="http://mydomain/sitefinity/CreateAccount.aspx" ip="192.168.1.255" browser="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8" referrer="http://mydomain/sitefinity/CreateAccount.aspx" confirmation="True" subject="Email from website: Account Request Form" sender="[email protected]" recipients="[email protected], , " /> 
    <fields> 
    <field> 
     <label>Personal Details</label> 
     <value>Personal Details</value> 
    </field> 
    <field> 
     <label>Name</label> 
     <value>Tim Wales</value> 
    </field> 
    <field> 
     <label>Email</label> 
     <value>[email protected]</value> 
    </field> 
    <field> 
     <label>Website</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Password</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Phone</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Years in Business</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Background</label> 
     <value>Background</value> 
    </field> 
    <field> 
     <label>Place of Birth</label> 
     <value>Earth</value> 
    </field> 
    <field> 
     <label>Date of Birth</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Some Label</label> 
     <value>Some Label</value> 
    </field> 
    <field> 
     <label>Industry</label> 
     <value> Technology Other</value> 
    </field> 
    <field> 
     <label>Pets</label> 
     <value>Dog</value> 
    </field> 
    <field> 
     <label>Your View</label> 
     <value>Positive</value> 
    </field> 
    <field> 
     <label>Misc</label> 
     <value>Misc</value> 
    </field> 
    <field> 
     <label>Comments</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Agree to Terms?</label> 
     <value>True</value> 
    </field> 
    </fields> 
</response> 


<?xml version="1.0"?> 
<response> 
    <properties id="60375c90-9dd7-400f-aafb-a8726df409a9" Form="Account Request" Date="Tuesday, March 16, 2010 6:21:07 PM" Page="http://mydomain/sitefinity/Home.aspx" IP="fe80::1c0f57:9ee3%10" Browser="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)" Referrer="http://mydomain/sitefinity/Home.aspx" Subject="Email from website: Account Request Form" Sender="[email protected]" Recipients="[email protected]" Confirmation="True" /> 
    <fields> 
    <field> 
     <label>Personal Details</label> 
     <value>Personal Details</value> 
    </field> 
    <field> 
     <label>Name</label> 
     <value>erger</value> 
    </field> 
    <field> 
     <label>Email</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Website</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Password</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Phone</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Years in Business</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Background</label> 
     <value>Background</value> 
    </field> 
    <field> 
     <label>Place of Birth</label> 
     <value>Earth</value> 
    </field> 
    <field> 
     <label>Date of Birth</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Some Label</label> 
     <value>Some Label</value> 
    </field> 
    <field> 
     <label>Industry</label> 
     <value> Technology Service</value> 
    </field> 
    <field> 
     <label>Pets</label> 
     <value>Dog</value> 
    </field> 
    <field> 
     <label>Your View</label> 
     <value>Positive</value> 
    </field> 
    <field> 
     <label>Misc</label> 
     <value>Misc</value> 
    </field> 
    <field> 
     <label>Comments</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Agree to Terms?</label> 
     <value>True</value> 
    </field> 
    </fields> 
</response> 

<?xml version="1.0"?> 
<response> 
    <properties id="60375c90-9dd7-400f-aafb-a8726df409a9" Form="Account Request" Date="Tuesday, March 16, 2010 4:50:17 PM" Page="http://mydomain/sitefinity/Home.aspx" IP="fe80::1c0f:ee3%10" Browser="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)" Referrer="http://mydomain/sitefinity/Home.aspx" Subject="Email from website: Account Request Form" Sender="[email protected]" Recipients="[email protected]" Confirmation="True" /> 
    <fields> 
    <field> 
     <label>Personal Details</label> 
     <value>Personal Details</value> 
    </field> 
    <field> 
     <label>Name</label> 
     <value>esfs</value> 
    </field> 
    <field> 
     <label>Email</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Website</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Password</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Phone</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Years in Business</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Background</label> 
     <value>Background</value> 
    </field> 
    <field> 
     <label>Place of Birth</label> 
     <value>Earth</value> 
    </field> 
    <field> 
     <label>Date of Birth</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Some Label</label> 
     <value>Some Label</value> 
    </field> 
    <field> 
     <label>Industry</label> 
     <value> Technology Service</value> 
    </field> 
    <field> 
     <label>Pets</label> 
     <value>Dog</value> 
    </field> 
    <field> 
     <label>Your View</label> 
     <value>Positive</value> 
    </field> 
    <field> 
     <label>Misc</label> 
     <value>Misc</value> 
    </field> 
    <field> 
     <label>Comments</label> 
     <value></value> 
    </field> 
    <field> 
     <label>Agree to Terms?</label> 
     <value>True</value> 
    </field> 
    </fields> 
</response> 

아무도 도와 드릴 수 있습니까?

답변

3

첫째, 당신은 쉽게 질의에 대한 XDocument에 문자열을로드해야합니다

var xdoc = XDocument.Parse(xmlResponse); 

그런 다음 원하는 값을 추출하기 위해 XDocument 클래스 (예를 들어, Elements("Blah")Attributes("Blah"))의 방법을 사용할 수 있습니다.

나는 당신을 위해 모든 것을 쓰려고하는 사람을 찾지 않을 것이라고 생각합니다. 그것이 당신의 직업입니다. 문제가있는 부분을 구체적으로 알려 주시면 도움을 드릴 수 있습니다.

+0

닷넷 2.0에서 XSLT를 구현하는 C# 코드와 링크입니다. XDocument와 같은 내장 CSV 객체가 있습니까? 그렇지 않으면 문자를 이스케이프 처리하고 수동으로 데이터를 분리해야합니다. 또한 큰 CSV 파일을 만드는 데 2,500 번 반복되는 경우 성능에 어떻게 접근합니까 (스트림이라고 생각합니까?)? – TruMan1

+0

Linq에서 CSV를 살펴보십시오. http://www.codeproject.com/KB/linq/LINQtoCSV.aspx – mhanney

관련 문제