XML whit 多节点到 C# 中的数据表

Posted

技术标签:

【中文标题】XML whit 多节点到 C# 中的数据表【英文标题】:XML whit multi node to datatable in c# 【发布时间】:2019-12-18 07:23:43 【问题描述】:

有没有办法将 xml 文件的导入映射到数据集? 例如,在我的情况下,我只想导入“DatiAnagrafici”并将“DataNascita”子节点和“indirizzo”添加到同一个表中。

xml tree

【问题讨论】:

【参考方案1】:

使用 Xml Linq,代码看起来像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using System.Data;

namespace ConsoleApplication1

    class Program
    
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        
            DataTable dt = new DataTable();
            dt.Columns.Add("Giorno", typeof(int));
            dt.Columns.Add("Mese", typeof(int));
            dt.Columns.Add("Anno", typeof(int));
            dt.Columns.Add("Via", typeof(string));
            dt.Columns.Add("Comune", typeof(string));
            dt.Columns.Add("Provincia", typeof(string));
            dt.Columns.Add("Cap", typeof(int));


            XDocument doc = XDocument.Load(FILENAME);
            List<XElement> datiAnagraficis = doc.Descendants("DatiAnagrafici").ToList();

            foreach(XElement datiAnagrafici in datiAnagraficis)
            
                int giorno = (int)datiAnagrafici.Descendants("Giorno").FirstOrDefault();
                int mese = (int)datiAnagrafici.Descendants("Mese").FirstOrDefault();
                int anno = (int)datiAnagrafici.Descendants("Anno").FirstOrDefault();
                string via = (string)datiAnagrafici.Descendants("Via").FirstOrDefault();
                string comune = (string)datiAnagrafici.Descendants("Comune").FirstOrDefault();
                string provincia = (string)datiAnagrafici.Descendants("Provincia").FirstOrDefault();
                int cap = (int)datiAnagrafici.Descendants("Cap").FirstOrDefault();

                dt.Rows.Add(new object[]  giorno, mese, anno, via, comune, provincia, cap );

            
        
    
 

【讨论】:

以上是关于XML whit 多节点到 C# 中的数据表的主要内容,如果未能解决你的问题,请参考以下文章

java中如何读取xml中数据。多节点的。给我一个例子,谢谢。

C#中将html转换为xml的实现

C# | CAD批量导出多段线节点坐标(附源代码下载)

3 尝试使用 C# 删除 XML 节点

从 C# 中的类生成具有重复节点的 XML

C# winform开发中,如果treeview的节点太多,导致加载很慢,怎么做可以提给效率?