LINQ 從 CSV 檔案生成 XML

2021-09-06 16:35:34 字數 3820 閱讀 5459

本文參考:

下面的**對字串陣列執行 linq 查詢。

在 c# 版本中,該查詢使用 let 子句將每個字串分隔成欄位陣列。

c#vb

// create the text file.

string csvstring = @"greal,great lakes food market,howard snyder,marketing manager,(503) 555-7555,2732 baker blvd.,eugene,or,97403,usa

hungc,hungry coyote import store,yoshi latimer,sales representative,(503) 555-6874,city center plaza 516 main st.,elgin,or,97827,usa

lazyk,lazy k kountry store,john steel,marketing manager,(509) 555-7969,12 orchestra terrace,walla walla,wa,99362,usa

letss,let's stop n shop,jaime yorres,owner,(415) 555-5938,87 polk st. suite 5,san francisco,ca,94117,usa";

file.writealltext("cust.csv", csvstring);

// read into an array of strings.

string source = file.readalllines("cust.csv");

xelement cust = new xelement("root",

from str in source

let fields = str.split(',')

select new xelement("customer",

new xattribute("customerid", fields[0]),

new xelement("companyname", fields[1]),

new xelement("contactname", fields[2]),

new xelement("contacttitle", fields[3]),

new xelement("phone", fields[4]),

new xelement("fulladdress",

new xelement("address", fields[5]),

new xelement("city", fields[6]),

new xelement("region", fields[7]),

new xelement("postalcode", fields[8]),

new xelement("country", fields[9])))

);console.writeline(cust);

這段**產生以下輸出:

xmlgreat lakes food market

howard snyder

marketing manager

(503) 555-7555

2732 baker blvd.

eugene

or97403

usa

hungry coyote import store

yoshi latimer

sales representative

(503) 555-6874

city center plaza 516 main st.

elgin

or97827

usa

lazy k kountry store

john steel

marketing manager

(509) 555-7969

12 orchestra terrace

walla walla

wa99362

usa

let's stop n shop

jaime yorres

owner

(415) 555-5938

87 polk st. suite 5

san francisco

ca94117

usa

二、linq 從xml檔案中生成csv格式的文字檔案

本示例的 c# 版本使用方法語法和 aggregate 運算子通過乙個表示式從 xml 文件生成 csv 檔案。 有關更多資訊,請參見linq 中的查詢語法和方法語法 (c#)。

visual basic 版本使用過程**將字串集合聚合為乙個字串。

本示例使用下面的 xml 文件:示例 xml 檔案:customers 和 orders (linq to xml)。

c#vb

xelement custord = xelement.load("customersorders.xml");

string csv =

(from el in custord.element("customers").elements("customer")

select

string.format(",,,,,,,,,",

(string)el.attribute("customerid"),

(string)el.element("companyname"),

(string)el.element("contactname"),

(string)el.element("contacttitle"),

(string)el.element("phone"),

(string)el.element("fulladdress").element("address"),

(string)el.element("fulladdress").element("city"),

(string)el.element("fulladdress").element("region"),

(string)el.element("fulladdress").element("postalcode"),

(string)el.element("fulladdress").element("country"),

environment.newline))

.aggregate(

new stringbuilder(),

sb => sb.tostring()

);console.writeline(csv);

這段**產生以下輸出:

greal,great lakes food market,howard snyder,marketing manager,(503) 555-7555,2732 baker blvd.,eugene,or,97403,usa

hungc,hungry coyote import store,yoshi latimer,sales representative,(503) 555-6874,city center plaza 516 main st.,elgin,or,97827,usa

lazyk,lazy k kountry store,john steel,marketing manager,(509) 555-7969,12 orchestra terrace,walla walla,wa,99362,usa

letss,let's stop n shop,jaime yorres,owner,(415) 555-5938,87 polk st. suite 5,san francisco,ca,94117,usa

php 生成csv檔案

廢話不多說,上乾貨 方法一 匯出excel csv data 匯出資料 headlist 第一行,列名 filename 輸出excel檔名 functioncsv export data array headlist array filename 將資料通過fputcsv寫到檔案控制代碼 fput...

Java生成CSV檔案

pm要求在資料庫查出資料在瀏覽器匯出為csv的檔案,一接手沒多想直接用poi存進hssfworkbook物件,最後把檔案字尾名弄csv用流直接輸出到客戶端,三下五除二就搞定了,並且能用正常開啟。後來測試發現根本不是那麼回事。其實,csv是逗號分隔的 b 純文字 b 而xls是二進位制的,顯然這種低階...

sqlplus 生成csv 檔案

set echo off 非表示 set linesize 1000 列數 set pagesize 0 不分頁 set trimspool on spool 行末 無効 set pause off 相當於自動回車 set termout off 出力 畫面表示 set feedback off 行...