【问题标题】:xml reader in asp.net c#asp.net c#中的xml阅读器
【发布时间】:2015-02-16 11:37:15
【问题描述】:

我要读取以下xml文件格式:

<?xml version="1.0" encoding="ISO-8859-1"?>
<WIDECAST_DVB>
  <channel name="XXX">
    <event id="0" start_time="2015-01-27 14:00:00" duration="28800">
      <short_event_descriptor lang="alb" name="Edicion informativ">Lajme nga vendi dhe bota</short_event_descriptor>
      <extended_event_descriptor lang="alb">
        <text />
      </extended_event_descriptor>
    </event>
    <event id="1" start_time="2015-01-27 22:00:00" duration="28800">
      <short_event_descriptor lang="alb" name="Edicion informativ">Lajme nga vendi dhe bota</short_event_descriptor>
      <extended_event_descriptor lang="alb">
        <text>jchdvdgd 
        </text>
      </extended_event_descriptor>
    </event>
    <event id="2" start_time="2015-01-28 06:00:00" duration="28800">
      <short_event_descriptor lang="alb" name="Edicion informativ">Lajme nga vendi dhe bota</short_event_descriptor>
      <extended_event_descriptor lang="alb">
        <text />
      </extended_event_descriptor>
    </event>
    <event id="3" start_time="2015-01-28 14:00:00" duration="28800">
      <short_event_descriptor lang="alb" name="Edicion informativ">Lajme nga vendi dhe bota</short_event_descriptor>
      <extended_event_descriptor lang="alb">
        <text />
      </extended_event_descriptor>
    </event>
 </channel>
</WIDECAST_DVB>

我想阅读这些字段:

名字, 开始时间, 期间, 短事​​件描述符名称, 简短的事件描述(标签内的文本), extended_event_descriptor/text(文本标签内的文本)

我的班级是:

 public class epg2
    {
        public epg2()
        {
            EventNumber = new List<Event>();
        }
        virtual public string channelname { get; set; }
        virtual public List<Event> EventNumber { get; set; }
        virtual public int number { get; set; }

    }
    public class Event
    {
        public Event()
        {

        }
        virtual public DateTime starttime { get; set; }
        virtual public int duration { get; set; }
        virtual public string name { get; set; }
        virtual public string shortDescription { get; set; }
        virtual public string longDescription { get; set; }

    }

【问题讨论】:

标签: c# asp.net xml xmlreader


【解决方案1】:

以 LinqToXML 为例:

XDocument doc = XDocument.Parse(xml);

        var resultChannels =
            doc.Descendants("channel")
                .Select(
                        c =>
                            new epg2()
                            {
                                channelname = c.Attribute("name").Value,
                                EventNumber =
                                    c.Elements("event")
                                    .Select(e =>
                                    new Event()
                                    {
                                        name = e.Element("short_event_descriptor").Attribute("name").Value,
                                        starttime = DateTime.Parse(e.Attribute("start_time").Value),
                                        duration = int.Parse(e.Attribute("duration").Value),
                                        shortDescription = e.Element("short_event_descriptor").Value,
                                        longDescription = e.Element("extended_event_descriptor").Element("text").Value
                                    }).ToList()
                            }).ToList();

【讨论】:

  • 我不希望结果是数组元素
  • 您可以遍历这个数组(foreach)并一个一个地获取它,或者您只需执行 foreach(var item in doc.Descendants("event")) 并获取匿名类型中的值初始化器
  • 这只是一种可能性。
  • 添加了 foreach 示例
  • 不知道应该将epg2中的数字映射到什么
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多