Datatableに挿入するXMLファイルがあります。 xmlファイルの形式は次のとおりです。
<userid ID="37729">
<TestId ID="84" TimeRemaining="60" />
<QuestId ID="1">
<Answer1>
</Answer1>
<Answer2>B</Answer2>
<Answer3>
</Answer3>
<Answer4>
</Answer4>
</QuestId>
</userid>
これを、次のようなデータテーブルに挿入します。
Question Id Answer1 Answer2 Answer3 Answer4
1 A D
2 B C
3 C
誰かが私がこれを達成するのを助けることができますか?.
まず、必要な列を含むDataTable
を作成し、次にLinq-to-XMLを介してデータを入力します。
Selectクエリを使用して各行を表すオブジェクトを作成し、次に各項目のDataRowを作成するための標準的なアプローチを使用できます...
class Quest
{
public string Answer1;
public string Answer2;
public string Answer3;
public string Answer4;
}
public static void Main()
{
var doc = XDocument.Load("filename.xml");
var rows = doc.Descendants("QuestId").Select(el => new Quest
{
Answer1 = el.Element("Answer1").Value,
Answer2 = el.Element("Answer2").Value,
Answer3 = el.Element("Answer3").Value,
Answer4 = el.Element("Answer4").Value,
});
// iterate over the rows and add to DataTable ...
}
DataSet ds = new DataSet();
ds.ReadXml(fileNamePath);
Visual C#.NETを使用してXMLデータをDataSetに読み込む方法 には、いくつかの詳細が含まれています。基本的に、オーバーロードされた DataSetメソッドReadXml を使用して、データをDataSetに取得できます。 XMLデータは最初のDataTableにあります。
DataTable.ReadXmlメソッド もあります。
このコードを使用できます(推奨)
MemoryStream objMS = new MemoryStream();
DataTable oDT = new DataTable();//Your DataTable which you want to convert
oDT.WriteXml(objMS);
objMS.Position = 0;
XPathDocument result = new XPathDocument(objMS);
これは別の方法ですが、最初の例です。がおすすめ
StringWriter objSW = new StringWriter();
DataTable oDt = new DataTable();//Your DataTable which you want to convert
oDt.WriteXml(objSW);
string result = objSW.ToString();