【问题标题】:XML To SQL Entity framworkXML 到 SQL 实体框架
【发布时间】:2021-03-28 05:07:01
【问题描述】:

我创建了一个XML Class 和一个SQL Entity Class

我需要将 XML 映射到我的 SQL,但是我偶然发现了一个数组问题,我无法弄清楚如何解决。

第一个代码

  using (var fileStream = File.Open(@"D:\ArbejdeSEGES\bigdutchman\BigDutchmanXMLReader\BigDutchmanXMLReader\XML\xml-export-01-04-2019 07.00.11.xml", FileMode.Open))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(export));
                var document = (export)serializer.Deserialize(fileStream);

                var ventilTable = new Ventil();    

                ventilTable.FarmId = document.farmer.farmid.ToString();

                foreach (var doc in document.device)
                {
                    systemTable.Device = doc.name;

                    foreach (var dialGrp in doc.dialoggroup)
                    {
                        if (dialGrp.id == 1)
                        {
                         ventilTable.Col1 = ????
                         ventilTable.Col2 = ?????

XML

  <export>
  <farmer>
      <farmid>42604</farmid>
  </farmer>
  <device name="FARE-LØBE" online="true">
     <dialoggroup id="1" name="Ventil">
          <field id="1" name="Ventil nr">
              <value index="0">DISP</value>
              <value index="1"></value>
              <value index="2"></value>
              <value index="3"></value>
              <value index="4"></value>
              <value index="5"></value>
              <value index="6"></value>
              <value index="7"></value>
              <value index="8"></value>
              <value index="9"></value>
              <value index="10"></value>
              </field>
               <field id="2" name="1. Mix nr.">
          <value index="0">1</value>
          <value index="1">1</value>
          <value index="2">1</value>
          <value index="3">1</value>
          <value index="4">1</value>
          <value index="5">1</value>
          <value index="6">1</value>
          <value index="7">1</value>
          <value index="8">1</value>
          <value index="9">1</value>
          <value index="10">1</value>
          </field>

如您所见,我现在非常卡住。我不确定如何一次分配所有值?我应该先列一个清单吗?数据集?

对话框组 = 表格

字段 = 列

值 = 行值

希望我得到其他一切请询问:)

【问题讨论】:

  • 最好的办法是先设计数据库的表。您可以使用 VS 自动创建实体 c# 类。
  • 问题与 SQL 的类无关。我已经这样做了

标签: c# arrays xml dataset


【解决方案1】:

使用以下序列化:

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(Export));
            Export export = (Export)serializer.Deserialize(reader);
        }
    }
    [XmlRoot("export")]
    public class Export
    {
        [XmlElement("farmer")]
        public Farmer farmer { get; set; }

        public Device device { get; set; }
 
    }
    public class Farmer
    {
        public int farmid { get; set; }
    }
    public class Device
    {
        [XmlAttribute()]
        public Boolean online { get; set; }
        [XmlAttribute()]
        public string name { get; set; }

        [XmlElement("dialoggroup")]
        public Dialoggroup dialoggroup { get; set; }
    }
    public class Dialoggroup
    {
        [XmlAttribute()]
        public int id { get; set; }
        [XmlAttribute()]
        public string name { get; set; }

        [XmlElement("field")]
        public List<Field> fields { get; set; }
    }
    public class Field
    {
        [XmlAttribute()]
        public int id { get; set; }
        [XmlAttribute()]
        public string name { get; set; }

        [XmlElement()]
        public List<Value> value { get; set; }

    }
    public class Value
    {
        [XmlAttribute()]
        public int index { get; set; }
        [XmlText]
        public string value { get; set; } 
    }
}

【讨论】:

  • 我应该用这个做什么?我已经有一个 XML 类。这不是我需要的。我需要弄清楚如何获取这些值
  • 您的代码是否适用于您的 xml 文件?上面的代码经过测试,可以正确解析xml。
  • 是的 - 正如您在我的代码中看到的那样,我可以遍历元素。我只需要弄清楚如何一次循环遍历字段和值以插入数据表或 sql 实体框架
  • 结果是一个带有表的数据库。你总是可以用一张占用大量空间并包含大量重复信息的表创建一个数据库。因此,要减小数据库的大小(并删除重复信息),您可以创建多个表并通过键链接这些表。所以在这种情况下,您需要创建键来处理数组。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 2018-09-11
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多