2011-05-30 3 views
-2

XML элемента Я доступ: здесь, если ниже образец неразборчивый: http://api.petfinder.com/pet.find?&animal=dog&count=150&location=90605&key=a94884c2349b5b6975ec84fb51ac3ec4linq to XML. как мне получить доступ к этим данным?

<pets> 
    <pet> 
     <id>19575609</id> 
     <shelterId>CA699</shelterId> <shelterPetId/> 
     <name>Louie</name> 
     <animal>Dog</animal> 
     <breeds> 
      <breed>Basset Hound</breed> 
     </breeds> 
     <mix>no</mix> 
     <age>Adult</age> 
     <sex>M</sex> 
     <size>M</size> 
     <options> ... </options> 
     <description> 
      <![CDATA[<div>Hi, my name is Louie. I&#39;m a great looking houndthat  really really wants his next home to be his final loving one. I&#39;m looking for an adult home that will have patience with me as I learn to trust humans again. I like other dogs and tolerate cats. I&#39;ve got lovely big front feet - just like a Basset should have. I walk well on a leash, and I&#39;m house-trained. I&#39;m a shy boy but I warm up once I get to know you and with lots of love and patience I&#39;m sure in no time I&#39;ll turn into a hound that is a happy-go-lucky boy. I&#39;m up to date on all vaccines and my adoption fee is $200.00. Please consider meeting me - I think once you do you will want to take me home and love me for the rest of my life. </div> <br/><a href="http://www.petfinder.com/petdetail/19575609">View this pet on Petfinder.com</a> ]]> 
     </description> 
     <lastUpdate>2011-05-16T19:22:23Z</lastUpdate> 
     <status>A</status> 
     <media> 
      <photos> 
       <photo size="x" id="1">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-1-x.jpg</photo> 
       <photo size="t" id="1">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-1-t.jpg</photo> 
       <photo size="pn" id="1">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-1-pn.jpg</photo> 
       <photo size="pnt" id="1">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-1-pnt.jpg</photo> 
       <photo size="fpm" id="1">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-1-fpm.jpg</photo> 
       <photo size="x" id="2">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-2-x.jpg</photo> 
       <photo size="t" id="2">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-2-t.jpg</photo> 
       <photo size="pn" id="2">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-2-pn.jpg</photo> 
       <photo size="pnt" id="2">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-2-pnt.jpg</photo> 
       <photo size="fpm" id="2">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-2-fpm.jpg</photo> 
       <photo size="x" id="3">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-3-x.jpg</photo> 
       <photo size="t" id="3">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-3-t.jpg</photo> 
       <photo size="pn" id="3">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-3-pn.jpg</photo> 
       <photo size="pnt" id="3">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-3-pnt.jpg</photo> 
       <photo size="fpm" id="3">http://photocache.petfinder.com/fotos/CA699/CA699.19575609-3-fpm.jpg</photo> 
      </photos> 
     </media> 
    </pet> 
</pets> 

код Я пытаюсь использовать ниже. атрибут, который я пытаюсь вернуть, - это URL.

void processXML(XElement _xml) 
    { 

     XNamespace ns = ""; 
     var pets = from item in 
         _xml.Elements(ns + "pets").Elements(ns + "pet") 
        select item; 

     foreach (var pet in pets) 
     { 
      Pet _pet = new Pet(); 

      _pet.id = (string)pet.Element(ns + "id"); 
      _pet.breeds = (string)pet.Element(ns + "breeds").Element(ns + "breed"); 
      _pet.name = (string)pet.Element(ns + "name"); 
      _pet.animal = (string)pet.Element(ns + "animal"); 

      **_pet.media = (string)pet.Element(ns + "media") 
                 .Element(ns + "photos").Element(ns + "photo") 
                 .Attribute(ns + "fpm");** 


      Results.Items.Add(_pet); 

     } 
    } 

Заранее благодарим за любые указания.

богатый

+5

В чем проблема? Что не работает? Какие сообщения об ошибках вы получаете? –

+1

Для справок в будущем: не вырезать и вставлять XML из представления браузера, лучше сохранять в виде текстового файла и копировать оттуда. И используйте форматирование кода. – Richard

+0

Возникает вопрос: как получить значение элемента фотографии (его URL), где атрибут размера - 'fpm'? – Richard

ответ

0

Если я понимаю, что вы должны сделать что-то вроде этого:

XmlElement photoList=pet.Element(ns + "media").Element(ns + "photos"); 

var url = from i in photoList.Descendants("photo") 
    where i.attribute("size").Equals("fpm") 
    select i.value; 

В этот момент я не могу скомпилировать его, но я думаю, что это хорошая отправная точка!

обновленный

void processXML(XElement _xml) 
    { 


     var pets = from item in 
         _xml.Elements("pet") 
        select item; 

     foreach (var pet in pets) 
     { 
      //Pet _pet = new Pet(); 

      string id = (string)pet.Element("id"); 
      string breeds = (string)pet.Element("breeds").Element("breed"); 
      string name = (string)pet.Element("name"); 
      string animal = (string)pet.Element("animal"); 

      /*string media = (string)pet.Element(ns + "media") 
                 .Element(ns + "photos").Element(ns + "photo") 
                 .Attribute(ns + "fpm");*/ 



      var url = from i in pet.Descendants().Elements("photo") 
         where i.Attribute("size").Value.Equals("fpm") 
         select i.Value; 
      //Results.Items.Add(_pet); 

     } 
    } 
+0

По какой-то причине я не могу разрешить XMlElement. Использование System.Xml. – user113799

+0

Я обновил сообщение – danyolgiax

+0

Спасибо за помощь! – user113799

Смежные вопросы