c# datatable writexml控制列名

Posted

技术标签:

【中文标题】c# datatable writexml控制列名【英文标题】:c# datatable writexml control column names 【发布时间】: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>

感谢回复

【问题讨论】:

【参考方案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 中定义我自己的特定数据格式。或者按属性或映射类型以某种方式使用列映射。 不客气。随意将问题标记为已回答(单击复选标记图标)。这就是它在这里的工作方式。

以上是关于c# datatable writexml控制列名的主要内容,如果未能解决你的问题,请参考以下文章

c#中datatable怎么添加列名

c#中两个列名相同的datatable,如何将他们数据加到一起?

C#实现DataTable行列转置

C# datatable 筛选,累加。

C#如何将.OrderBy与多列一起使用并将列号解码为列名?

当数据集WriteXml()函数生成xml文件时,C#如何使用XDocument类更新xml文件