begin process at 2012 05 27 06:14:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

XML

 > COMPTEUR DE VISITE DANS XML

COMPTEUR DE VISITE DANS XML


 Information sur la source

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :XML Source .NET ( DotNet ) Classé sous :compteur, visite, xml, statistique, xmldocument Niveau :Débutant Date de création :02/10/2004 Date de mise à jour :04/04/2005 10:04:21 Vu :20 391

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 Description

Ce code montre comment enregistrer dans un fichier XML le nombre de visite que vous avez sur une page.
Il n'y a rien d'exceptionnel, mais traite beaucoup d'XML, on a la une gestion assez complete de lire, ecrire, modifier des données contenus dans un fichier XML

Ce code fait suite à ce post http://www.aspfr.com/forum.v2.aspx?rm=1&ID=305546

Le constructeur nécessite l'objet Page de la page en cours ainsi on peut mettre ce code dans une DLL

voici un exemple d'utilisation :

     Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim PS As New PageStat(Page)
    If Not Page.IsPostBack Then
        PS.WriteStat()
    End If
    Response.Write("Vous etes la " & PS.ReadStat & "ème visite")
End Sub

Source

  • Imports System.IO
  • Imports System.Xml
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • '''
  • ''' </summary>
  • ''' <example>Cet exemple montre comment se servir de la classe
  • ''' <code>
  • ''' Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  • ''' Dim PS As New PageStat(Page)
  • ''' If Not Page.IsPostBack then
  • ''' PS.WriteStat()
  • ''' End If
  • ''' Response.Write("Vous etes la " & PS.ReadStat & "ème visite")
  • ''' End Sub
  • ''' </code>
  • ''' </example>
  • ''' -----------------------------------------------------------------------------
  • Public Class PageStat
  • #Region " Variables "
  • 'Contient le chemin du fichier xml
  • Private XmlPath As String
  • 'Contient l'instance de la page
  • Private Page As System.Web.UI.Page
  • #End Region
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Fonction creant le fichier XML conservant les données
  • ''' </summary>
  • ''' -----------------------------------------------------------------------------
  • Private Sub CreateXml()
  • 'on verifie la presence du dossier /Data et on le cree si besoin
  • If Not Directory.Exists(Page.Server.MapPath("") & "\Data") Then
  • Dim Dir As New DirectoryInfo(Page.Server.MapPath(""))
  • Dir.CreateSubdirectory("Data")
  • End If
  • 'on verifie la presence de Data/PageStat.xml et on le cree si besoin
  • If Not File.Exists(Page.Server.MapPath("Data") & "\PageStat.xml") Then
  • 'on stocke le chemin du fichier xml
  • XmlPath = Page.Server.MapPath("Data/PageStat.xml")
  • 'Creation du Fichier XML
  • Dim XMLobj As System.Xml.XmlTextWriter
  • Dim ue As New System.[Text].UnicodeEncoding
  • XMLobj = New System.Xml.XmlTextWriter(XmlPath, ue)
  • 'indentation etc...
  • XMLobj.Formatting = System.Xml.Formatting.Indented
  • XMLobj.Indentation = 3
  • XMLobj.WriteStartDocument()
  • 'Commentaires
  • XMLobj.WriteComment("XML crée pour Enregistrer le nombre de passage sur une page par Cyril Durand")
  • XMLobj.WriteComment("http://www.codes-sources.com/auteurdetail.aspx?ID=19303")
  • XMLobj.WriteComment("crée le " & Now.ToLongDateString)
  • 'Noeud parent
  • XMLobj.WriteStartElement("Pages") 'Pages
  • XMLobj.WriteEndElement() '/Pages
  • 'Fermeture
  • XMLobj.Close()
  • End If
  • End Sub
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Instanciation de la Class PageStat
  • ''' </summary>
  • ''' <param name="InstanceOfPage">instance de l'objet Page de la page qui appelle la class</param>
  • ''' -----------------------------------------------------------------------------
  • Public Sub New(ByVal InstanceOfPage As System.Web.UI.Page)
  • Page = InstanceOfPage
  • CreateXml()
  • End Sub
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Ajoute une visite à la page en cours
  • ''' </summary>
  • ''' -----------------------------------------------------------------------------
  • Public Sub WriteStat()
  • 'On va lire la valeur du compteur
  • Dim Compteur As Decimal = ReadStat()
  • Dim Doc As New XmlDocument
  • Doc.Load(XmlPath)
  • Select Case Compteur
  • 'On doit créer un noeud <Page>
  • Case 0 Or -1
  • 'ajout des stats de la page
  • Dim mElement As XmlElement
  • mElement = Doc.CreateElement("Page")
  • mElement.InnerText = 1.ToString
  • mElement.SetAttribute("PageName", Page.Request.CurrentExecutionFilePath)
  • 'Fermeture du fichier
  • Doc.DocumentElement.AppendChild(mElement)
  • Doc.Save(XmlPath)
  • 'On indente de 1 le noeud
  • Case Else
  • Dim Node As XmlNode = Doc.DocumentElement.FirstChild
  • 'on recherche le noeud jusqu'a l'avoir trouvé puis on l'indente de 1
  • Do Until Node Is Nothing
  • If Node.Attributes(0).Value = Page.Request.CurrentExecutionFilePath Then
  • Node.InnerText = (Compteur + 1).ToString
  • Exit Do
  • End If
  • Node = Node.NextSibling
  • Loop
  • 'on enregistre
  • Doc.Save(XmlPath)
  • End Select
  • End Sub
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Lit le nombre de visite de la page en cours
  • ''' </summary>
  • ''' <returns>Le nombre de visite de la page en cours</returns>
  • ''' -----------------------------------------------------------------------------
  • '''
  • Public Function ReadStat() As Decimal
  • 'On appelle ReadStat avec le nom de la page en cours en paramètre
  • Return ReadStat(Page.Request.CurrentExecutionFilePath)
  • End Function
  • ''' -----------------------------------------------------------------------------
  • ''' <summary>
  • ''' Lit le nombre de visite de la page Demandé
  • '''
  • ''' Merci à Seb_d_angers d'avoir vu qu'il manquait quelque chose :p et d'avoir écrit cette fonction :)
  • ''' </summary>
  • ''' <returns>Le nombre de visite de la page Demandé</returns>
  • ''' -----------------------------------------------------------------------------
  • '''
  • public function ReadStat(PageName as string ) as integer
  • dim ret as integer = 0
  • dim doc as new XmlDocument();
  • Doc.Load(sFile)
  • dim Node as XmlNode = Doc.DocumentElement.FirstChild
  • if not Node is nothing
  • ' on recherche le noeud jusqu'a l'avoir trouvé puis on lit
  • do
  • if (Node.Attributes(0).Value == PageName)
  • ret = System.Convert.ToInt32(Node.InnerText)
  • exit do
  • end if
  • Node = Node.NextSibling
  • loop while (Node is nothing)
  • end if
  • return ret
  • end function
  • End Class
Imports System.IO
Imports System.Xml

''' -----------------------------------------------------------------------------
''' <summary>
''' 
''' </summary>
''' <example>Cet exemple montre comment se servir de la classe
'''  <code>
'''     Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'''        Dim PS As New PageStat(Page)
'''        If Not Page.IsPostBack then 
'''            PS.WriteStat()
'''        End If
'''        Response.Write("Vous etes la " & PS.ReadStat & "ème visite")
'''    End Sub
'''  </code>
''' </example> 
''' -----------------------------------------------------------------------------
Public Class PageStat

#Region " Variables "

    'Contient le chemin du fichier xml
    Private XmlPath As String
    'Contient l'instance de la page 
    Private Page As System.Web.UI.Page

#End Region

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Fonction creant le fichier XML conservant les données
    ''' </summary>
    ''' -----------------------------------------------------------------------------
    Private Sub CreateXml()

        'on verifie la presence du dossier /Data et on le cree si besoin 
        If Not Directory.Exists(Page.Server.MapPath("") & "\Data") Then
            Dim Dir As New DirectoryInfo(Page.Server.MapPath(""))
            Dir.CreateSubdirectory("Data")
        End If

        'on verifie la presence de Data/PageStat.xml et on le cree si besoin 
        If Not File.Exists(Page.Server.MapPath("Data") & "\PageStat.xml") Then

            'on stocke le chemin du fichier xml 
            XmlPath = Page.Server.MapPath("Data/PageStat.xml")

            'Creation du Fichier XML 
            Dim XMLobj As System.Xml.XmlTextWriter
            Dim ue As New System.[Text].UnicodeEncoding
            XMLobj = New System.Xml.XmlTextWriter(XmlPath, ue)

            'indentation etc...
            XMLobj.Formatting = System.Xml.Formatting.Indented
            XMLobj.Indentation = 3
            XMLobj.WriteStartDocument()

            'Commentaires
            XMLobj.WriteComment("XML crée pour Enregistrer le nombre de passage sur une page par Cyril Durand")
            XMLobj.WriteComment("http://www.codes-sources.com/auteurdetail.aspx?ID=19303")
            XMLobj.WriteComment("crée le " & Now.ToLongDateString)

            'Noeud parent
            XMLobj.WriteStartElement("Pages") 'Pages
            XMLobj.WriteEndElement() '/Pages

            'Fermeture
            XMLobj.Close()
        End If

    End Sub

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Instanciation de la Class PageStat
    ''' </summary>
    ''' <param name="InstanceOfPage">instance de l'objet Page de la page qui appelle la class</param>
    ''' -----------------------------------------------------------------------------
    Public Sub New(ByVal InstanceOfPage As System.Web.UI.Page)
        Page = InstanceOfPage
        CreateXml()
    End Sub

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Ajoute une visite à la page en cours
    ''' </summary>
    ''' -----------------------------------------------------------------------------
    Public Sub WriteStat()

        'On va lire la valeur du compteur
        Dim Compteur As Decimal = ReadStat()

        Dim Doc As New XmlDocument
        Doc.Load(XmlPath)

        Select Case Compteur

            'On doit créer un noeud <Page>
        Case 0 Or -1

                'ajout des stats de la page 
                Dim mElement As XmlElement
                mElement = Doc.CreateElement("Page")
                mElement.InnerText = 1.ToString
                mElement.SetAttribute("PageName", Page.Request.CurrentExecutionFilePath)

                'Fermeture du fichier
                Doc.DocumentElement.AppendChild(mElement)
                Doc.Save(XmlPath)

                'On indente de 1 le noeud
            Case Else

                Dim Node As XmlNode = Doc.DocumentElement.FirstChild

                'on recherche le noeud jusqu'a l'avoir trouvé puis on l'indente de 1
                Do Until Node Is Nothing
                    If Node.Attributes(0).Value = Page.Request.CurrentExecutionFilePath Then
                        Node.InnerText = (Compteur + 1).ToString
                        Exit Do
                    End If
                    Node = Node.NextSibling
                Loop

                'on enregistre 
                Doc.Save(XmlPath)

        End Select

    End Sub

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Lit le nombre de visite de la page en cours
    ''' </summary>
    ''' <returns>Le nombre de visite de la page en cours</returns>
    ''' -----------------------------------------------------------------------------
    ''' 
    Public Function ReadStat() As Decimal
        'On appelle ReadStat avec le nom de la page en cours en paramètre
        Return ReadStat(Page.Request.CurrentExecutionFilePath)
    End Function

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Lit le nombre de visite de la page Demandé
    '''
    ''' Merci à Seb_d_angers d'avoir vu qu'il manquait quelque chose :p et d'avoir écrit cette fonction :)
    ''' </summary>
    ''' <returns>Le nombre de visite de la page Demandé</returns>
    ''' -----------------------------------------------------------------------------
    ''' 
 public function ReadStat(PageName as  string ) as integer
	dim ret as integer = 0

	dim doc as new XmlDocument();
	Doc.Load(sFile)
	dim Node as XmlNode = Doc.DocumentElement.FirstChild
	if not Node is nothing
	' on recherche le noeud jusqu'a l'avoir trouvé puis on lit
		do
			if (Node.Attributes(0).Value == PageName)
				ret = System.Convert.ToInt32(Node.InnerText)
				exit do
			end if
			Node = Node.NextSibling
		loop while (Node is nothing)
	end if 
	return ret
end function

End Class

 Conclusion

Le code a été fait rapidement et n'a pas été testé sur du long terme, si vous trouver des erreurs, des optimisations possibles, ou alors tout autre commentaire, n'hésitez pas à me donner votre avis.



 Historique

03 octobre 2004 00:33:55 :
04 avril 2005 10:04:21 :
Oublie d'un bout de code, merci à Seb_d_angers de me l'avoir dit et donné le code manquant.

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID...
Source .NET (Dotnet) RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Source avec Zip Source .NET (Dotnet) OPTIMISATION DE LA SERIALISATION JSON POUR LES LIST<T>
Source avec Zip Source .NET (Dotnet) CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA...

 Sources de la même categorie

AJOUTER UN NOEUD DANS UN FICHIER XML DÉJÀ EXISTANT par pkzip
BASE DE DONNÉ BDD VERS XML : CONVERSION D'UN RECORDSET VERS ... par pifou25
Source .NET (Dotnet) GÉNÉRATION D'UN XML À PARTIR D'UNE BDD ACCESS par fabienfs
Source avec Zip LECTEUR DE FLUX RSS OBJET par Yoyo2B
Source avec Zip Source .NET (Dotnet) TRANSFORMATION XSLT POUR OBTENIR DU CODE XTML VALIDE À INTÉG... par saizonou

 Sources en rapport avec celle ci

AJOUTER UN NOEUD DANS UN FICHIER XML DÉJÀ EXISTANT par pkzip
Source avec Zip Source avec une capture Source .NET (Dotnet) UN SEMBLANT DE MASTERPAGE POUR DES FICHIERS XSL par bizzard4
BASE DE DONNÉ BDD VERS XML : CONVERSION D'UN RECORDSET VERS ... par pifou25
Source avec Zip Source .NET (Dotnet) P'TIT LIVRE D'OR EN C# AVEC UN FICHIER XML POUR STOCKER LES ... par jimmy69
Source avec Zip GESTION DES VISITES SUR VOTRE SITE(ASP+ACCESS) par laurentcu

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

j'arrive pas à lire un xml avec xmldocument [ par pmoury ] je recupere un xml dans un string mais impossible de le lire pour recuperer le resultat avec xlmdocument au moment du load, j'ai un erreurmon code :mo Un compteur de visite [ par Jackboy ] Allo, je recherche un moyen de faire un compteur de visiteur du genre comme ici dans ce site " 32 visiteur présentement sur le chat", mais ce code dev compteur de visite(urgent please read this message) [ par omaroch ] bonjour tt le monde,voila mon probleme: je fais un compteur de vistes en asp qui marche nickel. il enregistre sur un fichier a chaque fois que je me c compteur de visite [ par erasheed21 ] je cherche un moyen de compter le nombre de visites de chaque page .aspx exemple: page1.aspx : nbrevisites :152page2.aspx : nbrevisites :33etc..merc Problème de chargement d'un fichier XML :s [ par khalid220v ] Je suis entrain de développer une application web qui va aller charger un fichier XML présent dans le répertoire App_Data qui est évidement présent d Lire un fichier XML en asp pur [ par TheBuzzer ] J'ai un fichier XML à plusieurs niveaux et je n'arrive pas à lire le contenu, on me retourne constamment des erreurs d'objet manquant ou [] en trop!? galerie audiio [ par sibel ] [b]Si quelqu'un veut tester ces performances en AS et XML, j'ai une colle!!! J'ai une gallerie audio dans mon site : http://www.betc-communication.c Probleme Xpath [ par kaygee ] ello, j'ai un souci pour retrouver un élément dans mon xml j'ai un xml dont je n'ai aucune valeur d'attribut me permettant de retrouver un élément s de uml vers xml a travers xslt [ par bochradhouib ] bonjour, je veux savoir,svp,comment passer d'un document.xmi vers un autre document .xml a travers un xslt.... Pouvez vous me donner un exemple,ça ser Changer le content type de text/xml vers "application/vnd.google-earth.kmz kmz" [ par Seb_d_angers ] Bonjour, Je cherche à afficher des info dans google earth avec une mise à jour périodique. Google earth sait très bien faire cela. Il va chercher un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales