从XML

时间:2016-06-01 14:47:48

标签: c# .net xml parsing linq-to-xml

是否有可能从XML文档自动填充dataTable?

通过自动,我的意思是,自动生成行/列。

要使用的XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<tns:factures xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://XXX" xsi:schemaLocation="xxxxx.xsd">
<facture num="F0000047672" numArchivage="000" dateCompostage="2016-04-14" numCompostage="20160414000333" numTVAIntracom="FR09429449457" nomFournisseur="TT" numCommande="09457519" societeFacturee="005" typeFacture="FAC" montantHT="3817.920" montantTTC="4027.910" montantTVA="209.990" devise="EUR" dateFacture="2016-04-04" dateEcheance="2016-05-31" CodeSiteLivraison="630N" factureDetaillee="false" nomFichier="KKK_005_20160414_000333.pdf">
    <ligneTVA tauxTVA="5.500" montantHT="3817.920" montantTVA="209.990" montantTTC="4027.910" />
</facture>
<facture num="970928" numArchivage="000" dateCompostage="2016-04-14" numCompostage="20160414000365" numTVAIntracom="FR64482283694" nomFournisseur="jfjfjfj" numCommande="02090828" societeFacturee="005" typeFacture="FAC" montantHT="28623.980" montantTTC="34348.780" montantTVA="5724.800" devise="EUR" dateFacture="2016-04-11" dateEcheance="2016-06-10" CodeSiteLivraison="02K" factureDetaillee="false" nomFichier="KKK_005_20160414_000365.pdf">
    <ligneTVA tauxTVA="20.000" montantHT="28623.980" montantTVA="5724.800" montantTTC="34348.780" />
</facture>
</tns:factures>

如您所见,有一个“facture”节点和一个“LigneTVA”节点。

我想在dataTable中自动添加这两个节点,而不指定每一列。

这可能吗?

使用Linq-to-SQL?或其他什么?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

试试这个

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication22
{
    public partial class Form1 : Form
    {
        const string FILENAME = @"c:\temp\test.xml";
        public Form1()
        {
            InitializeComponent();

            DataSet ds = new DataSet();
            ds.ReadXml(FILENAME);
            dataGridView1.DataSource = ds.Tables[0];
        }
    }
}