【问题标题】:c# xml file contain Repeating nodes are skipped and not saved into DataSetc# xml文件包含重复节点被跳过并且不保存到DataSet中
【发布时间】:2022-07-08 01:24:53
【问题描述】:

您好,我正在尝试读取 XML 文件并将其保存到 DataSet 中,问题是重复节点被跳过而不是保存到 DataSet 中

下面是xml:

<Production>
<Number>399195</Number>
<Code>21</Code>
<VehicleID>VR7A45GYVNL012461</VehicleID>
<ModelID>1CCE</ModelID>
<Date>2022-05-10T01:12:05.000Z</Date>
<ProductionSpecificationText>CDNB08 </ProductionSpecificationText>
<ProductionSpecificationText>CDPK02 </ProductionSpecificationText>
<ProductionSpecificationText>CDNM00 </ProductionSpecificationText>
<ProductionSpecificationText>CB0DSY </ProductionSpecificationText>
<ProductionSpecificationText>CDRL02 </ProductionSpecificationText>
<ProductionSpecificationText>CDL700 </ProductionSpecificationText>
<ProductionSpecificationText>CB0CCE </ProductionSpecificationText>
</Production>


DataSet dataSet = new DataSet();
    
dataSet.ReadXml(@"C:\Users\elhammh\Desktop\xmlfiletest");

【问题讨论】:

  • 检查你的数据集,看看你有多少表。 Dataset ReadXml 创建了无法使用的碎片表。更好地使用 XML Linq 读取文件。将发布代码。

标签: c# asp.net xml datatable dataset


【解决方案1】:

尝试以下:

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


namespace ConsoleApplication23
{

    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Number", typeof(int));
            dt.Columns.Add("Code", typeof(int));
            dt.Columns.Add("VehicleID", typeof(string));
            dt.Columns.Add("ModelID", typeof(string));
            dt.Columns.Add("Date", typeof(DateTime));
            dt.Columns.Add("ProductionSpecificationText", typeof(string));

            XDocument doc = XDocument.Load(FILENAME);

            XElement production = doc.Root;

            int number = (int)production.Element("Number");
            int code = (int)production.Element("Code");
            string vehicleId = (string)production.Element("VehicleID");
            string modelId = (string)production.Element("ModelID");
            DateTime date = (DateTime)production.Element("Date");
            foreach (XElement text in production.Elements("ProductionSpecificationText"))
            {
                dt.Rows.Add(new object[] {
                    number,
                    code,
                    vehicleId,
                    modelId,
                    date,
                    (string)text
                });
            }

 

        }
    }
 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多