これは私の初めての投稿です。そのため、無知や例の使用に失敗したことをお詫び申し上げます。XMLに区切られたCSV - フォルダ階層
私はかなり少数のCSVファイルが与えられている場所を作成するためのコンソールアプリプロジェクトがありますが、親子関係のいくつかを作成する必要があります(XML?多分?アップロードを行うと、最小限の呼び出しでDMSに書き込みをするために - フォルダが何度も存在している場合、私はクエリを実行することにしたくない)
を、私は私が必要とするこの1
に少し私の深さの外にしていますサードパーティライブラリの依存関係がなくてもこれを行う最善の方法を知るためには、OLEDB JETプロバイダを使用する純粋なC#が必要な解析を処理するために必要な可能性が高く、これまでのところCSVファイルには順序がありません。ダウに見えるnリストとその逆。
年と月 - ここ
は、エンド出力は、(これらは最終的にDMS内部の列を更新するためのものである)YEAR/MONTH/FILENAME
+(各ファイルの属性)になりますCSV出力
"DESCRIPTION1","8, 5/8\" X 6.4MM","STRING","filename001.pdf","2016-09-19","1"
"DESCRIPTION2","12, 3/4\" X 6.4MM","STRING","filename001.pdf","2016-09-19","1"
"DESCRIPTION3","12, 3/4\" X 6.4MM","STRING","filename001.pdf","2016-09-19","1"
"another description 20# gw","1","388015","Scan123.pdf","2015-10-24","1"
"another description 20# gw","3","385902","Scan456.pdf","2015-04-14","1"
"STRINGVAL1","273.10 X 9.27 X 6000","45032-01","KHJDWNEJWKFD9101529.pdf","2012-02-03","1"
"STRINGVAL2","273.10 X 21.44 X 6000","7-09372","DJSWH68767681540.pdf","2017-02-03","1"
の例です
YEAR alreadが存在する場合、それは再び作成されません
その年の月が存在する場合、それは作成されませんain
ファイル名がすでにYEAR/MONTHに存在する場合、ファイル名は再度作成されませんが、そのFileNameの追加の属性が属性に追加されます(「行区切り?」)。
必要な出力:私は私が進行するが、それはすべての行を出力し、何のグループ化を行わないために出力することができる、必要なXMLを開始するためにLINQクエリを試みた
、私はLINQのに慣れていないです現時点では。
私はこのようにしている.Split( '、')の基本エスケープに関する問題もありました(私のテストファイルと以下の例でTAB分離を使用した私と比較して、元のCSVの例を参照してください)。 Oledbのプロバイダがそれを処理してもらいたい。
string[] source = File.ReadAllLines(@"C:\Processing\In\mockCsv.csv");
XElement item = new XElement("Root",
from str in source
let fields = str.Split('\t')
select new XElement("Year", fields[4].Substring(0, 4),
new XElement("Month", fields[4].Substring(5, 2),
new XElement("FileName", fields[3]),
new XElement("Description",fields[0]),
new XElement("Length", fields[1]),
new XElement("Type", fields[2]),
new XElement("FileName", fields[3]),
new XElement("Date", fields[4]),
new XElement("Authorised", fields[5]))
)
);
はまた、私は設定してください、次のように
Logger.Write(String.Format("Reading records from csv file ({0})... ",
csvFile), Logger.MsgType.Info, true, false);
あなたの問題は何かわかりません。 CSVを解析することはできませんか?または、メモリ内のオブジェクトからXMLを作成する方法がわからないのですか?より具体的にするために質問を更新してください。 –
私はcsvからオブジェクトをグループ化し、グループ化された属性を持つ必要な別の形式でXMLに出力する方法がわかりません – RJones
.Netの 'TextFieldParser'を使用してください。とにかく、あなたは1つの質問であまりにも多くを求めています。 –