2013-04-30 2 views
0

Я пытаюсь разобрать этот XML-документ:
http://services.tvrage.com/feeds/episode_list.php?sid=3332Получение правильной информации из документа XML

У меня есть этот класс:

public class Episode { 
    public int Season { get; set; } 
    public string Title { get; set; } 
} 

Мой код:

string path = "http://services.tvrage.com/feeds/episode_list.php?sid=" + id; 

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

Теперь я застрял. Как создать список эпизодов из этого файла? Я смущен из-за атрибута, используемого для Сезона.

Благодаря

+0

XSL является вашим другом. –

ответ

1

Попробуйте это:

var episodes = doc.SelectNodes(@"/Show/Episodelist/Season/episode"); 
List<Episode> episodesList = new List<Episode>(); 
foreach (XmlNode episode in episodes) 
{ 
    episodesList.Add(new Episode() 
    { 
     Season = Int32.Parse(episode.ParentNode.Attributes["no"].Value.ToString()), 
     Title = episode.SelectNodes("title")[0].InnerText 
    }); 
} 
0

Here простой учебник, это может быть полезно. В нем описывается, как получить элементы из xml-файла.

После этого вам нужно будет только сделать List<Episode> и заполнить его данными.

2

Как о попытке Linq To Xml?

var xDoc = XDocument.Load("http://services.tvrage.com/feeds/episode_list.php?sid=3332"); 

var name = xDoc.Root.Element("name").Value; 
var episodes = xDoc.Descendants("episode") 
        .Select(e => new 
        { 
         epnum = (string)e.Element("epnum"), 
         //seasonnum = (string)e.Element("seasonnum"), 
         seasonnum = (string)e.Parent.Attribute("no"), 
         prodnum = (string)e.Element("prodnum"), 
         airdate = (string)e.Element("airdate"), 
         link = (string)e.Element("link"), 
         title = (string)e.Element("title"), 
        }) 
        .ToList(); 
+0

Спасибо, но номер сезона находится в атрибуте, а не в элементе. – Bv202

+0

Но также в теге 'seasonnum'. – I4V

+0

Нет, это еще один номер ... – Bv202

0
string path = @"http://services.tvrage.com/feeds/episode_list.php?sid="+id; 
IEnumerable<Episode> Episodes =XDocument.Load(path) 
     .Descendants("episode") 
     .Select(x => new Episode 
     { 

      Season = Convert.ToInt16(x.Element("seasonnum").Value), 
      Title = x.Element("title").Value 
     }); 
Смежные вопросы