Отображение определенной записи из XML-файла с использованием ASP.NET mvc5
У меня проблемы с выяснением, что здесь не так. Это дает мне ошибку, если узел не существует в его контексте:
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 ответ
Решение
Вот решение с использованием 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; }
}
}