仕事で聞かれたので、とりあえずメモとして残しておきます。下記のような XML を サクッと CSV にしたいといった要件がありました。
<content>
<item code="item1" name="年齢">
55
</item>
<item code="item2" name="性別">
男性
</item>
<item code="item3" name="都道府県">
東京都
</item>
<item code="item4" name="その他">
特になし
</item>
</content>
上記の XML を下記のような CSV に変換したいという要件です。( 実際の要件はもう少し、複雑で時間がかかるので、簡単な部分だけ切り出しますww ( 全部やるのは面倒なので... ) ) 上記の XML は C:\SampleData.xml に格納するものとします。
item1,年齢,55
item2,性別,男性
item3,都道府県,東京都
item4,その他,特になし
下記のソースで上記の XML から CSV が出力されます。今回は、C# ではなく VB.NET を使ってみました。( なんとなくです。 ) 『 elem.@code 』、『 elem.@name 』は、item タグの属性にアクセスするための記述で、『 elem.Value 』 は item タグの値にアクセスするための記述です。
Dim contents As IEnumerable(Of String) = _
From elem In XElement.Load("C:\SampleData.xml").<item> Select _
String.Format("{0},{1},{2}{3}", _
elem.@code, _
elem.@name, _
elem.Value.Trim(), _
Environment.NewLine
)
Dim sb As StringBuilder = New StringBuilder()
For Each str As String In contents
sb.Append(str)
Next
Dim sw As New System.IO.StreamWriter("C:\CSVResult1.txt", _
False, _
System.Text.Encoding.GetEncoding("utf-8"))
sw.Write(sb.ToString())
sw.Close()
最近まったくプログラムやってないですけど、LINQ 便利ですよね。普通に DOM 使って解析するとかもう考えられないです。