2013-05-09 3 views
0

Здравствуйте, может кто-нибудь, пожалуйста, покажите мне, как сделать чтение этого xml в C# правильно, я пробовал много, и я не могу заставить его работать, помощь очень ценится!чтение xml от php до C#

создать этот XML в PHP:

<?xml version="1.0" ?> 
- <root> 
    <budget>n/A</budget> 
    <cast>Robert De Niro/Katherine Heigl/Diane Keaton/Amanda Seyfried/Topher Grace/Susan Sarandon/Robin Williams/Ben Barnes/Christine Ebersole/David Rasche/Patricia Rae/Ana Ayora/Kyle Bornheimer/Megan Ketch/Christa Campbell</cast> 
    <country>USA</country> 
    <directors>Justin Zackham</directors> 
    <genres>Comedy</genres> 
    <languages>English/Spanish</languages> 
    <discription>A long-divorced couple fakes being married as their family unites for a wedding.</discription> 
    <plot>A long-divorced couple fakes being married as their family unites for a wedding.</plot> 
    <trailer>http://www.imdb.com/video/imdb/vi2079761945/player</trailer> 
    <poster>posters/1931435.jpg</poster> 
    <rating>5.2</rating> 
    <releasedate>26 April 2013 (USA)</releasedate> 
    <runtime>89 min</runtime> 
    <title>It's never too late to start acting like a family.</title> 
    <tagline>It's never too late to start acting like a family.</tagline> 
    <year>2013</year> 
    <votes>1,466</votes> 
    <url>http://www.imdb.com/title/tt1931435/</url> 
    <sites><a href="http://facebook.com/TheBigWeddingMovie" target="_blank">Official Facebook</a>/<a href="http://thebigweddingmovie.com/" target="_blank">Official site</a></sites> 
    </root> 

Я пытаюсь разобрать его в C#, как это:

     using (XmlReader reader = XmlReader.Create("data.xml")) 
         { 
          reader.ReadStartElement("root"); 
          while (reader.Name == "title") 
          { 
           XElement el = (XElement)XNode.ReadFrom(reader); 
          } 

          reader.ReadEndElement(); 
         } 

Может кто-нибудь увидеть, что я делаю неправильно здесь?

Я не получаю названия в своих результатах.

В чем проблема?

ответ

1

Поскольку ваш XML является плоской, как об использовании Linq и загрузить его в словарь

var response = new WebClient().DownloadString("http://citfree.com/cronjobs/imdb/fetch.php?url=Star+Wars"); 

var dict = XDocument.Parse(response.Trim()).Root 
      .Elements() 
      .ToDictionary(e => e.Name.LocalName, e => (string)e); 

Console.WriteLine(dict["budget"]); 

PS: Для чтения непосредственно из файла вы можете использовать XDocument.Load(filename)

+0

Я попробовал это, но получил исключение в сети var response = new WebClient(). DownloadString («http://www.citfree.com/cronjobs/imdb/fetch.php?url=» + IMDB); var doc = XDocument.Parse (response) .Root.Elements(); var dict = doc.ToDictionary (e => e.Name.LocalName, e => (строка) e); Console.WriteLine (dict ["budget"]); – Dean

+0

@Dean См. Обновленный ответ. Я добавил 'Trim', так как ваш сайт добавляет пустую строку в xml. – I4V

1

Итак, вы хотите иметь объект на C#, который содержит представление XML?

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

XDocument doc = XDocument.Load("data.xml"); 
+0

im получение исключения, используя это тоже. – Dean

+0

Можете ли вы обновить свой вопрос и предоставить свой текущий исходный код? – Jan