简体   繁体   中英

XML To SQL Entity framwork

I have created an XML Class and a SQL Entity Class .

I need to map the XML to my SQL however I have stumbled into a problem with Arrays which I cannot figure out how to solve.

First Code

  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>

As you can see im pretty stuck now. Im not sure how to assign all values at once? Should i make a List first? A DataSet?

Dialoggroup = Table

Field = Columns

value = row values

Hope I got everything else please ask:)

Use following for serialization:

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; } 
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM