简体   繁体   English

使用ASP.NET mvc5从xml文件显示特定记录

[英]Display a specific record from an xml file using ASP.NET mvc5

I'm having issues figuring out what's wrong here. 我在找出问题所在时遇到问题。 It's giving me an error was node does not exist in its context: 如果节点在其上下文中不存在,这给我一个错误:

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:

<?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>

I've tried changing it to xmlNode , contains , and others. 我尝试将其更改为xmlNodecontains和其他。 Please and thanks for helping. 请并感谢您的帮助。

Here is a solution using Xml Linq which is a new Visual Studio library than older XmlElement 这是使用Xml Linq的解决方案,它是比以前的XmlElement新的Visual Studio库

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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