IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

Récupérer un champ d'un html text


Sujet :

Développement Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Par défaut Récupérer un champ d'un html text
    Bonjour,

    Je récupère une réponse d'une requête http comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     string html = string.Empty;
     
     
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Credentials = new NetworkCredential(textBoxUser.Text.ToString(), textBoxPasswd.Text.ToString());
                request.AutomaticDecompression = DecompressionMethods.GZip;
     
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Stream stream = response.GetResponseStream())
                using (StreamReader reader = new StreamReader(stream))
                {
                    html = reader.ReadToEnd();
     
                }
    Je veux récupérer une information (un champ) de mon html.

    Mon html est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <CountingStatisticsDescription >         
    <statisticType>enternum</statisticType>         
    <reportType>daily</reportType>         		 
    <startTime>2016-06-30T16:00:00Z</startTime>		 
    <endTime>2016-06-30T19:00:00Z</endTime>              
    </CountingStatisticsDescription>
    Je veux récupérer la valeur du champ "start time".

    Pourriez-vous m'aider s'il vous plait?

    Merci!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 64
    Par défaut
    Salut,

    bon, déjà, ce n'est pas du html mais du xml, mais passons.

    En théorie, la bonne manière e faire serait d'avoir une classe qui représente l'objet que tu reçois, et dont tu contrôlerais la déserialisation, en .NET le plus courant est de faire ça avec des attributs, ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    [XmlType]
            public class CountingStatisticsDescription
            {
     
                [XmlElement("statisticType")]
                public string StatisticType
                {
                    get;
                    set;
                }
     
                [XmlElement("startTime")]
                public DateTime StartTime
                {
                    get;
                    set;
                }
            ...
    ...
    ..
    Ensuite, tu déserialises le xml que tu reçois pour en faire un objet en mémoire, et tu lis la propriété qui t'intéresse
    (pour la déserialisation => https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx)


    Tout ça, c'est pas mal à connaître.

    Après, si dans ton cas, tu n'es intéressé que par cette seule propriété, que c'est le seul endroit de ton programme où tu lis un flux xml, etc., etc..., que tu as la flemme... j'en passe, tu peux également parser "à la main" la chaîne de caractère pour en extraire ce que tu veux.
    Un truc du genre (en supposant que tu mettes le texte reçu dans une variable appelée "xml") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var tag = "<startTime>";
                var startTimeIndex = xml.IndexOf(tag);
     
                if (startTimeIndex >= 0)
                {
                    startTimeIndex += tag.Length;
                    var lastIndex = xml.IndexOf("</startTime>");
     
                    if (lastIndex > startTimeIndex)
                    {
                        DateTime startTime;
                        DateTime.TryParse(xml.Substring(startTimeIndex, lastIndex - startTimeIndex), out startTime);
                    }
                }
    (Pas testé, y a peut-être des imprécisions).

    Mais note bien que c'est ce qu'on appelle communément du bricolage, je te conseille la désérialisation si tu veux faire de la qualité.

Discussions similaires

  1. VBA Récupérer le contenu d'un fichier texte dans un champs
    Par sperchey dans le forum VBA Access
    Réponses: 7
    Dernier message: 17/06/2008, 14h05
  2. comment récupérer un champ text
    Par alaa_85 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 16/11/2007, 13h14
  3. Récupérer un champ texte multiple d'un formulaire
    Par yoyot dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 11h10
  4. [RegEx] Récupérer le champ mail d'un fichier html (suite)
    Par nico93100 dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2006, 16h24
  5. Réponses: 3
    Dernier message: 03/12/2005, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo