DataTable を XML に変換するのに助けが必要です。私はLINQを使用してそれを行いましたが、私がしなければならない通りに正確に取得することはできません. わかりやすいように絵を描いてみました。XML は以下のような特定の形式である必要があるため、dt.writexml() だけを使用することはできません。アーティスト ID は自動採番が必要です。曲はアーティストごとにグループ化されています。プロジェクト全体で使用したLinq cozのソリューションを好みますが、ここで必要なものを手に入れることができませんでした。列名は既知であるため、コードでこのようなものを使用できます。row.Field(Of String)("タイトル")
どうもありがとう 。私は真剣です。下手な英語でごめんなさい。
CreateDatatable - この単純なコードはデータテーブルを作成する必要があります
Dim dTable As New DataTable
dTable.Columns.Add("Title")
dTable.Columns.Add("Artist")
dTable.Columns.Add("Album")
dTable.Rows.Add("Baby one more time", "Britney Spears", "Baby one more time")
dTable.Rows.Add("Crazy", "Britney Spears", "Best of")
dTable.Rows.Add("Every time", "Britney Spears", "Best of")
dTable.Rows.Add("Black and White", "Michael Jackson", "Best of")
dTable.Rows.Add("You are not alone", "Michael Jackson", "Best of")
dTable.Rows.Add("Smile", "Michael Jackson", "Best of")
私が今持っているもの。グループ化とアルバム インデックスなしでデータテーブルを xml に変換します。
Dim xmlDoc As New XDocument(
From row In dt.Rows
Select XElement("SONG",
From column In dt.Columns
Select
New XAttribute(column.Name, row.Item(column.Name))
)
)
まあ..私はまた、いくつかのコードを持っています..最初に作成されたxmlを照会し、グループ化を行いますが、曲要素に属性としてalbum="albumname"をまだ持っています。そして、それはデータテーブルからxmlへの1つのクエリである必要があります..xmlに対して再度クエリを実行して、再フォーマットする必要があるのは嫌いです。
Dim replacement = New XDocument(New XElement("root",
original.Descendants("Song")
.GroupBy(Function(x) Convert.ToString(x.Element("artist").value))
.[Select](Function(songsForArtist, index)
New XElement("artist", New XAttribute("id", index + 1),
New XAttribute("name", songsForArtist.Key), songsForArtist))))