C# datatable writexml 控制列名
c# datatable writexml control column names
在我的程序中,我正在写入 SQLite DB table 的 XML 内容。一切都很好,但是输出格式对我来说不是 suitable 。我怎样才能在元素中应用我自己的名字。因为如果我从 SQLite 加载到 DataTable 并尝试通过 WriteXML 保存列的名称是元素的名称。我想把元素的名称作为元素的属性。请看一下,这是我的代码。
我的 C# 代码:
namespace SQLiteDemo
{
internal class Program
{
private const string DatabaseFile = "j.db";
private const string DatabaseSource = "data source=" + DatabaseFile;
private static void Main(string[] args)
{
// Create the file which will be hosting our database
if (!File.Exists(DatabaseFile))
{
SQLiteConnection.CreateFile(DatabaseFile);
}
// Connect to the database
using (var connection = new SQLiteConnection(DatabaseSource))
{
// Create a database command
using (var command = new SQLiteCommand(connection))
{
connection.Open();
// Select and display database entries
command.CommandText = "Select * FROM DB_company_5000";
var ds = new DataTable();
ds.Load(command.ExecuteReader());
ds.WriteXml("jj.xml");
connection.Close(); // Close the connection to the database
Console.Read();
}
}
}
}
}
我的输出是:
<DB_company_5000>
<ID>3</ID>
<Name>Velin Ivan</Name>
<Adress>Vamberská 273</Adress>
<City>London 18</City>
<TEL>NULL</TEL>
<EXT>NULL</EXT>
</DB_company_5000>
期望的输出:
<table name="DB_company_5000">
<column name="ID">1</column>
<column name="Name">Velin Ivan</column>
<column name="Adress">Vamberská 273</column>
<column name="City">London 18</column>
<column name="TEL">NULL</column>
<column name="EXT">NULL</column>
</table>
感谢回复
由于基本XML只是字符串数据,我们可以使用简单的字符串替换来解决这个问题。它不是特别优雅,但我认为它回答了这个问题:
string xml = @"<DB_company_5000>
<ID>3</ID>
<Name>Velin Ivan</Name>
<Adress>Vamberská 273</Adress>
<City>London 18</City>
<TEL>NULL</TEL>
<EXT>NULL</EXT>
</DB_company_5000>";
xml = xml.Replace("<DB_company_5000>", "<table name=\"DB_company_5000\">");
xml = xml.Replace("</DB_company_5000>", "</table>");
xml = xml.Replace("<ID>", "<column name=\"ID\">");
xml = xml.Replace("</ID>", "</column>");
// ETC...
在我的程序中,我正在写入 SQLite DB table 的 XML 内容。一切都很好,但是输出格式对我来说不是 suitable 。我怎样才能在元素中应用我自己的名字。因为如果我从 SQLite 加载到 DataTable 并尝试通过 WriteXML 保存列的名称是元素的名称。我想把元素的名称作为元素的属性。请看一下,这是我的代码。
我的 C# 代码:
namespace SQLiteDemo
{
internal class Program
{
private const string DatabaseFile = "j.db";
private const string DatabaseSource = "data source=" + DatabaseFile;
private static void Main(string[] args)
{
// Create the file which will be hosting our database
if (!File.Exists(DatabaseFile))
{
SQLiteConnection.CreateFile(DatabaseFile);
}
// Connect to the database
using (var connection = new SQLiteConnection(DatabaseSource))
{
// Create a database command
using (var command = new SQLiteCommand(connection))
{
connection.Open();
// Select and display database entries
command.CommandText = "Select * FROM DB_company_5000";
var ds = new DataTable();
ds.Load(command.ExecuteReader());
ds.WriteXml("jj.xml");
connection.Close(); // Close the connection to the database
Console.Read();
}
}
}
}
}
我的输出是:
<DB_company_5000>
<ID>3</ID>
<Name>Velin Ivan</Name>
<Adress>Vamberská 273</Adress>
<City>London 18</City>
<TEL>NULL</TEL>
<EXT>NULL</EXT>
</DB_company_5000>
期望的输出:
<table name="DB_company_5000">
<column name="ID">1</column>
<column name="Name">Velin Ivan</column>
<column name="Adress">Vamberská 273</column>
<column name="City">London 18</column>
<column name="TEL">NULL</column>
<column name="EXT">NULL</column>
</table>
感谢回复
由于基本XML只是字符串数据,我们可以使用简单的字符串替换来解决这个问题。它不是特别优雅,但我认为它回答了这个问题:
string xml = @"<DB_company_5000>
<ID>3</ID>
<Name>Velin Ivan</Name>
<Adress>Vamberská 273</Adress>
<City>London 18</City>
<TEL>NULL</TEL>
<EXT>NULL</EXT>
</DB_company_5000>";
xml = xml.Replace("<DB_company_5000>", "<table name=\"DB_company_5000\">");
xml = xml.Replace("</DB_company_5000>", "</table>");
xml = xml.Replace("<ID>", "<column name=\"ID\">");
xml = xml.Replace("</ID>", "</column>");
// ETC...