【问题标题】:how to format an xml file generated from a datagridview in windows forms c#如何格式化从Windows窗体中的datagridview生成的xml文件c#
【发布时间】:2018-05-10 09:02:08
【问题描述】:

我有一个数据网格视图,其中包含我想保存为 XML 文件的数据。我最近两周只使用 Windows 表单,所以我的经验有限。我已经设法保存了文件,但我想知道如何将其保存为如下示例所示的格式。如果有任何帮助,我将不胜感激

//This is what im getting
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <itemstable>
    <ProcessName>batchmnt.exe</ProcessName>
    <ProcessPID>DDD</ProcessPID>
    <ProcessFileName>mark</ProcessFileName>
    <Operation>WriteFile</Operation>
    <ProcessLength>3</ProcessLength>
    <ProcessPath>mark</ProcessPath>
    <ProcessKey>batchmnt.exe|DDD|mark|WriteFile</ProcessKey>
  </itemstable>
<DocumentElement>

//This is what im looking for
<Msg Date ="" Time="">
    <Layer Name="Core">
        <SourceLayer Name="PMC">
        <Message ProcessName=""
                 PID =""
                 FileName=""
                 Operation=""
                 Length=""
                 Path="">                
        </Message>
    </Layer>
</Msg>

//And this is my code    
private void SaveXML()
        {
            string filename = "";
            SaveFileDialog sfd = new SaveFileDialog
            {
                Filter = "XML (*.xml)|*.xml",
                FileName = ""
            };
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                filename = sfd.FileName;
                Deleteifexists(filename);
                DataTable dt = new DataTable("itemstable");

                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    dt.Columns.Add(dataGridView1.Columns[i].Name, typeof(System.String));
                }

                DataRow myrow;
                int icols = dataGridView1.Columns.Count;
                foreach (DataGridViewRow drow in this.dataGridView1.Rows)
                {
                    myrow = dt.NewRow();
                    for (int i = 0; i <= icols - 1; i++)
                    {

                        myrow[i] = drow.Cells[i].Value;
                    }
                    dt.Rows.Add(myrow);
                }

                dt.WriteXml(filename);
            }


        }

【问题讨论】:

  • 当前 xml 和预期 xml 之间没有相似之处。你希望 DataTable 怎么猜你想要什么?
  • OOP 方法来做到这一点 - 将创建对象的层次结构并使用 DataGrid 值填充它。然后是 XmlSerialize。
  • 是的,我知道它们不是相似的输出。我希望得到像我展示的那样的输出,而不是当前的输出
  • 设置DataColumn 属性。特别是ColumnNameColumnMapping

标签: c# xml winforms


【解决方案1】:

DataTable.WriteXML 还将额外接收一个 XMLSchema。

如果您滚动到此链接的底部,这里有一个如何使用架构的示例: https://msdn.microsoft.com/en-us/library/system.data.datatable.writexml(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多