【问题标题】:c# datatable writexml control column namesc# datatable writexml控制列名
【发布时间】:2020-03-19 22:05:35
【问题描述】:

在我的程序中,我正在写入 SQLite DB 表的 XML 内容。一切都很好,但是输出格式不适合我。如何在元素中应用我自己的名字。因为如果我从 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>

感谢回复

【问题讨论】:

    标签: c# xml sqlite converters


    【解决方案1】:

    由于基本的 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...
    

    【讨论】:

    • 是的,它非常简单但功能强大。谢谢。我正在寻找某种方法来使用一些内置机制来做到这一点。比如在 XML 中定义我自己的特定数据格式。或者按属性或映射类型以某种方式使用列映射。
    • 不客气。随意将问题标记为已回答(单击复选标记图标)。这就是它在这里的工作方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多