Прочитать данные из XML в один документ - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Буду рад помощи. Имею XML документ в котором нужно считать нужные позиции и вывести в строку. Сам xml. Не часто с ними работаю xml.rar По коду идет класс с показателями xml дока
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
 
namespace XmlHelper.External.Models
{
    public class Document
    {
 
        [Display(Name = "Номер транспортного средства")]
        public string TR_NOMER { get; set; }
        
        [Display(Name = "Номер СМГС")]
        public string NOM_DOC { get; set; }
 
        [Display(Name = "Дата СМГС")]
        public DateTime DATE_DOC { get; set; }
 
        [Display(Name = "Номер ТД")]
        public string NOM_DOC2 { get; set; }
 
        [Display(Name = "Дата ТД")]
        public DateTime DATE_DOC2 { get; set; }
 
        [Display(Name = "Номер Счета")]
        public string NOM_DOC3 { get; set; }
 
        [Display(Name = "Дата Счета")]
        public DateTime DATE_DOC3 { get; set; }
        
        [Display(Name = "Регистрационный номер ЭУРВ")]
        public string RENGUM_PTO { get; set; }
 
        [Display(Name = "Дата")]
        public DateTime DATE_REG { get; set; }
        
        [Display(Name = "Дата помещения на временное хранение")]
        public string DATE_RAZR { get; set; }
        
        [Display(Name = "Номер размещения на временное хранение")]
        public string NUM_RAZR { get; set; }
        
    }
}
По контроллеру сделал так
        public ActionResult Index()
        {
            var lists = new List<Document>();
 
            string xmlData = Server.MapPath("~/App_Data/1.xml");
            DataSet ds = new DataSet();
            ds.ReadXml(xmlData);
            var documents = new List<Document>();
            IList<int> index = new List<int>();
            index.Add(18);
            index.Add(19);
            index.Add(23);
            index.Add(24);

            documents = (from rows in ds.Tables[18].AsEnumerable()
                         select new Document
                         {
                             TR_NOMER = rows[0].ToString()
                         }).ToList();
            foreach (var data in documents)
            {
                lists.Add(data);
            }
 
            documents = (from rows in ds.Tables[19].AsEnumerable()
                         select new Document
                         {
                             NOM_DOC = rows[1].ToString(),
                             DATE_DOC = Convert.ToDateTime(rows[2].ToString())
                         }).ToList();
            foreach (var data in documents)
            {
                lists.Add(data);
            }

            documents = (from rows in ds.Tables[23].AsEnumerable()
                         select new Document
                         {
                             RENGUM_PTO = rows[0].ToString(),
                             DATE_REG = Convert.ToDateTime(rows[1].ToString())
                         }).ToList();
 
            foreach (var data in documents)
            {
                lists.Add(data);
            }
 
            documents = (from rows in ds.Tables[24].AsEnumerable()
                         select new Document  
                         {
                             DATE_RAZR = rows[0].ToString(),
                             NUM_RAZR = rows[2].ToString()
                         }).ToList();

            foreach (var data in documents)
            {
                lists.Add(data);
            }
 
            return View(lists);
        }
Загвоздка в том, что при отображении страницы, получается что это не один документ, а несколько Помогите странсформировать запрос так, чтобы считывало те поля, которые нужно в один документ (т.к. таких документов будет на считывание в дальнейшем много). Или же вывести из коллекции lists все данные в одну строку Пробовал вот так изначальнро, но выдавало ошибку, что не найден столбец 2.
            string xmlData = Server.MapPath("~/App_Data/1.xml");
            DataSet ds = new DataSet();
            ds.ReadXml(xmlData);
            var documents = new List<Document>();
            IList<int> index = new List<int>();
            index.Add(18);
            index.Add(19);
            index.Add(23);
            index.Add(24);
            //foreach (var indexTable in index)
            //{
 
                 //documents = (from rows in ds.Tables[indexTable].AsEnumerable()
                 //             select new Document
                 //             {
                 //                 NOM_DOC = Convert.ToInt32(rows[1].ToString()),
                 //                 DATE_DOC = rows[2].ToString(),
                 //                 NOM_DOC2 = rows[3].ToString(),
                 //                 DATE_DOC2 = rows[4].ToString(),
                 //                 NOM_DOC3 = rows[5].ToString(),
                 //                 DATE_DOC3 = rows[6].ToString(),
                 //                 PENGUM_PTO = rows[0].ToString(),
                 //                 DATE_REG = rows[1].ToString(),
                 //                 DATE_RAZR = rows[0].ToString(),
                 //                 NUM_RAZR = rows[2].ToString()
                 //                 TR_NOMER = rows[0].ToString()
                 //             }
                 //             ).ToList();

Решение задачи: «Прочитать данные из XML в один документ»

textual
Листинг программы
string xmlData = Server.MapPath("~/App_Data/1.xml");
DataSet ds = new DataSet();
ds.ReadXml(xmlData);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5