Прочитать данные из XML в один документ - C#
Формулировка задачи:
Всем привет.
Буду рад помощи.
Имею XML документ в котором нужно считать нужные позиции и вывести в строку.
Сам xml. Не часто с ними работаю
xml.rar
По коду идет класс с показателями xml дока
По контроллеру сделал так
Загвоздка в том, что при отображении страницы, получается что это не один документ, а несколько
Помогите странсформировать запрос так, чтобы считывало те поля, которые нужно в один документ (т.к. таких документов будет на считывание в дальнейшем много).
Или же вывести из коллекции lists все данные в одну строку
Пробовал вот так изначальнро, но выдавало ошибку, что не найден столбец 2.
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);
} 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);