asp.net データテーブルを XML ドキュメントに変換するメソッドを書きたいと思います。それを達成するための最良の方法は何ですか?非常に初歩的な質問で申し訳ありません。
前もって感謝します。
DataTable.WriteXml メソッドの使用をご覧ください
DataTable の現在の内容を XML として書き込みます。
より具体的には、XmlWriteMode Enumerationを使用したオーバーロード
オプションの使用WriteSchema
DataSet の現在の内容を XML データとして書き込み、リレーショナル構造をインライン XSD スキーマとして書き込みます。DataSet にデータのないスキーマのみがある場合、インライン スキーマのみが書き込まれます。DataSet に現在のスキーマがない場合、何も書き込まれません。
"WriteXml"
メソッドを使用して、データテーブルを XML ドキュメントに変換できます。
例:
DataTable dt = new DataTable("Product");
DataColumn dc = new DataColumn();
dc.ColumnName = "ProductID";
dc.DataType = typeof(int);
dt.Columns.Add(dc);
DataColumn dc2 = new DataColumn();
dc2.ColumnName = "ProductName";
dc2.DataType = typeof(string);
dt.Columns.Add(dc2);
dt.Rows.Add(new object[] { "1", "CShap In Depth By Jon Skeet" })
dt.WriteXml("{path to save your xml file}\\documentname.xml");
それでも、次のサンプルコードを使用できる拡張メソッドが必要です(テストされていません)
( http://www.extensionmethod.net/csharp/datatable/toxmlから取得)
public static XDocument ToXmlDocument(this DataTable dataTable, string rootName)
{
var XmlDocument = new XDocument
{
Declaration = new XDeclaration("1.0", "utf-8", "")
};
XmlDocument.Add(new XElement(rootName));
foreach (DataRow row in dataTable.Rows)
{
XElement element = null;
if (dataTable.TableName != null)
{
element = new XElement(dataTable.TableName);
}
foreach (DataColumn column in dataTable.Columns)
{
element.Add(new
XElement(column.ColumnName, row[column].ToString().Trim(' ')));
}
if (XmlDocument.Root != null) XmlDocument.Root.Add(element);
}
return XmlDocument;
}
}