Отображение определенной записи из XML-файла с использованием ASP.NET mvc5 - PullRequest
0 голосов
/ 03 октября 2018

У меня проблемы с выяснением, что здесь не так.Это дает мне ошибку, если узел не существует в его контексте:

XmlDocument doc = new XmlDocument();
doc.Load("path");

Personal persons = doc.SelectNodes("/Persons/record")
 .Cast<XmlNode>()
 .Where(ID.Equals(node["ID"].InnerText) ==> This node does not exist
 .Select(node => new Personal()
 {
     ID = node["ID"].InnerText,
     Name = node["Name"].InnerText,
     Email = node["Email"].InnerText,
     DateOfBirth = node["DateOfBirth"].InnerText,
     Gender = node["Gender"].InnerText,
     City = node["City"].InnerText
 }).FirstOrDefault());

return View(persons);

XML:

<?xml version="1.0" encoding="UTF-8"?>
<Persons>
  <record>
    <ID>1602081497499</ID>
    <Name>Graham, Echo J.</Name>
    <Email>diam@Nullaeu.net</Email>
    <DateOfBirth>11/07/93</DateOfBirth>
    <Gender> Female</Gender>
    <City>Lloydminster</City>
  </record>
  <record>
    <ID>1688110330299</ID>
    <Name>Larson, Kevin K.</Name>
    <Email>eu.augue@penatibuset.co.uk</Email>
    <DateOfBirth>03/11/94</DateOfBirth>
    <Gender>Male </Gender>
    <City>Habra</City>
  </record>
</Persons>

Я попытался изменить его на xmlNode, contains, идругие.Пожалуйста и спасибо за помощь.

1 Ответ

0 голосов
/ 03 октября 2018

Вот решение с использованием Xml Linq, который является новой библиотекой Visual Studio, чем более старый XmlElement

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

namespace ConsoleApplication71
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string id = "123";

            XDocument doc = XDocument.Load(FILENAME);
            List<Personal> personals = doc.Descendants("record").Select(x => new Personal()
            {
                ID = (string)x.Element("ID"),
                Name = (string)x.Element("Name"),
                Email = (string)x.Element("Email"),
                DateOfBirth = (DateTime)x.Element("DateOfBirth"),
                Gender = (string)x.Element("Gender"),
                City = (string)x.Element("City")
            }).Where(x => x.ID == id).ToList();
        }

    }
    public class Personal
    {
        public string ID {get ; set; }
        public string Name {get ; set; }
        public string Email {get ; set; }
        public DateTime DateOfBirth {get ; set; }
        public string Gender {get ; set; }
        public string City { get; set; }
    }
}
...