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...