Читать атрибут xml как объект - PullRequest
       0

Читать атрибут xml как объект

0 голосов
/ 19 сентября 2019

У меня есть следующий простой XML-файл, и я пытаюсь прочитать код атрибута, используя C # .NET Core Console.Я действительно жажду любой помощи.

<course type="IT" date="19.09.2019">
    <line code="IT001"/>
</course>

ОБНОВЛЕНИЕ Мне нужен результат как объект.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Используйте сериализацию xml для получения класса

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            XmlSerializer serializer = new XmlSerializer(typeof(Course));
            Course course = (Course)serializer.Deserialize(reader);
        }
    }
    [XmlRoot("course")]
    public class Course
    {
        [XmlAttribute("type")]
        public string _type { get; set; }

        public DateTime _date { get; set; }

        [XmlAttribute("date")]
        public string date {
            get { return _date.ToString("dd.MM.yyyy"); }
            set { _date = DateTime.ParseExact(value, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture); } 
        }


        private string _code { get; set; }

        [XmlElement("line")]
        public Line line
        {
            get { return new Line() { code = _code }; }
            set { _code = value.code; }
        }

    }
    [XmlRoot("line")]
    public class Line
    {
        [XmlAttribute("code")]
        public string code { get; set; }
    }
}
0 голосов
/ 19 сентября 2019

Множество способов снять шкуру с этой кошки.Вот решение с использованием XPath

var xmlDoc = new XmlDocument();

xmlDoc.LoadXml("<course type=\"IT\" date=\"19.09.2019\"> <line code=\"IT001\"/></course>");
var attrVal = xmlDoc.SelectSingleNode("/course/line/@code").Value;

Console.WriteLine("Attribute 'code' value is " + attrVal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...