none
extraire url d'une image dans un fichier XML RRS feed

  • Question

  • Salut..,j'ai ce type de document xml:

     

    <item>
    <description><![CDATA[<style>img { max-width: 310px; }</style><div><img style="float: left; margin: 6px;" 
    src="http://www.jawharafm.net/data/16-08-11/bna150.jpg" alt="alt" />
    ...]]></description>
    </item>
    
    listBox1.ItemsSource = from item in xmlItems.Descendants("item")
             let pho = item.Attribute("img")
             select new news
             {
              photo = pho == null ? null : pho.Value,
             };
    le problème est que je n'arrive pas à accéder l'url de la source de la balise <img />(je pense a le faire
    avec les expressions régulière mais j'ai pas trouvé une solution)
    Merci

     


    zipo
    mardi 16 août 2011 16:09

Réponses

  • Bonjour,

    Avec le regex, je suis arrivé à quelque chose comme ça pour récupérer l'adresse de l'image (dans le cas où il y aura toujours l'url de l'image...), après je ne sais pas si exactement ça dont vous avez besoin et pas des autres infos à côté, mais c'est facilement adaptable en faisant quelques regex :)

    listBox1.ItemsSource = from item in xdoc.Descendants("item")
              let pho = item.Element("description")
              select new news
              {
               photo = pho == null ? null : Regex.Matches(pho.Value, "http://.*.(jpg)")[0].Value
              };


    • Marqué comme réponse Zied Nassr mardi 16 août 2011 20:44
    mardi 16 août 2011 17:03

Toutes les réponses

  • Bonjour,

    Avec le regex, je suis arrivé à quelque chose comme ça pour récupérer l'adresse de l'image (dans le cas où il y aura toujours l'url de l'image...), après je ne sais pas si exactement ça dont vous avez besoin et pas des autres infos à côté, mais c'est facilement adaptable en faisant quelques regex :)

    listBox1.ItemsSource = from item in xdoc.Descendants("item")
              let pho = item.Element("description")
              select new news
              {
               photo = pho == null ? null : Regex.Matches(pho.Value, "http://.*.(jpg)")[0].Value
              };


    • Marqué comme réponse Zied Nassr mardi 16 août 2011 20:44
    mardi 16 août 2011 17:03
  • Attention matthieu, ta regex a quelques soucis :

    - les parenthèses inutiles autour du jpg,

    - le point qui n'est pas escapé

    - tu ne prends pas en compte les .JPG (en majuscule)ou les autres extensions genre png. 

    - s'il n'y a pas d'image, ca crashe

     

    Voila une regex qui fonctionnera a tout les coups

    var regex=new Regex("src=(?:\"|\')(?<uri>[^\"']+)(?:\"|\')");

     

    listBox1.ItemsSource = from item in xdoc.Descendants("item")
       let pho = item.Element("description")
       select new news
       {
       photo = pho == null ? null : (regex.IsMatch(pho.Value)? regex.Match(pho.Value).Groups["uri"].Value : null)
       };
    
    Voila !

     


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    mardi 16 août 2011 22:05
    Modérateur
  • Oui exact, c'était un sample très rapide que j'avais fait tout à l'heure :).
    mardi 16 août 2011 22:08