World of Avalloc - Forum: debut de codage d'un syteme d'addon - World of Avalloc - Forum

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

debut de codage d'un syteme d'addon pas super fonctionnel :/

#1 L'utilisateur est hors-ligne   vivien Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 13-février 10

Posté 15 février 2010 - 21:45

Bonjour, ceci doit simplement parser le XML, ca devrait (mais sa marche pas >_<) afficher le serveur sur lequel vous jouez, sa version, le nom de l'alliance (mais c'est due a un bogue ca :D), vos techno, vos planètes et enfin vos bâtiments.
j'ai un prob dans ma condition SYSTEME, il ne traite pas les données :@


<?php
$fichier = "addons-XXXXXXXXXXX.xml";

// Ma propre fonction de traitement des balises ouvrantes
function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
	// En fait... nous nous conteterons de mémoriser le nom de la balise afin d'en tenir compte dans la fonction "fonctionTexte"
	global $derniereBaliseRencontree;

	$derniereBaliseRencontree = $nomBalise;
}
// Ma propre fonction de traitement des balises fermantes
function fonctionBaliseFermante($parseur, $nomBalise)
 {
	// On oublie la dernière balise rencontrée
	global $derniereBaliseRencontree;
	$derniereBaliseRencontree = "";
	}

// Ma propre fonction de traitement du texte qui est appelée par le "parseur"
function fonctionTexte($parseur, $texte)
{
	global $derniereBaliseRencontree;
	
	

	// Selon les cas, nous affichons le texte ou nous proposons un lien
	// ATTENTION: Par défaut les noms des balises sont mises en majuscules
	
if ($derniereBaliseRencontree == "SYSTEME")
	{
	echo "it's working <br \>";
	switch ($derniereBaliseRencontree)
 {
 	case "SERVER": 
 	echo "Serveur : \"$texte\"<br \>";
 	break;
 	case "VERSION":
 	echo "Version : \"$texte\"<br \>";
 	break;
 	}
	}


else
	switch ($derniereBaliseRencontree)
 {
 	case "NOM": 
 	echo $texte;
 	break;
 	case "NIVEAU":
 	echo " : \"$texte\"<br \>";
 	break;
 	} 	
	
 // echo $texte."<br/>"; // Dans l'immédiat nous nous contentons d'afficher le texte brut accompagné d'un simple retour à la ligne
}

$parseurXML = xml_parser_create();// Création du parseur XML

// Je précise le nom des fonctions à appeler lorsque des balises ouvrantes ou fermantes sont rencontrées
xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
 	, "fonctionBaliseFermante");

xml_set_character_data_handler($parseurXML, "fonctionTexte"); // Je précise le nom de la fonction a appeler lorsque du texte est rencontré

// Ouverture du fichier
$fp = fopen($fichier, "r");
if (!$fp) die("Impossible d'ouvrir le fichier XML");

	// Lecture ligne par ligne
while ( $ligneXML = fgets($fp, 1024)) {
	// Analyse de la ligne
	// REM: feof($fp) retourne TRUE s'il s'agit de la dernière ligne du fichier.
	xml_parse($parseurXML, $ligneXML, feof($fp)) or
 	die("Erreur XML");
}
 
xml_parser_free($parseurXML);
fclose($fp);
?>



Pour votre propre sécurité, n'utiliser ce code que sur un serveur local, avec un fichier d'addon en local et non en distant ;)

je laisse ici pour ce soir, je suis trop naze.

les com's qui sont dedans, c'est parce que j'ai eu du mal a reprendre ce vieux truc :(

#2 L'utilisateur est hors-ligne   Bybydj Icône

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 14-février 10

Posté 16 février 2010 - 16:50

Tiens, je viens de faire un petit utilitaire en C#/WPF pour afficher les infos des add-on.
Si ça peut t'aider / te donner des idées ^^

En images ça donne ça :
Image IPB
Image IPB

La partie C# (c'est très verbeux parce que je préfère quand les propriétés commencent par une majuscule, mais dans le xml, tout est en minuscule '^^)
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Xml;
using System.IO;

namespace Avalloc
{
    public class Systeme
    {
        [XmlElement("server")]
        public string Serveur { get; set; }
        [XmlElement("version")]
        public string Version { get; set; }
        [XmlElement("sysdate")]
        public string Sysdate { get; set; }

        [XmlIgnore()]
        public string DateSysteme
        {
            get
            {
                DateTime ret;
                if (DateTime.TryParse(Sysdate, out ret))
                    return ret.ToString();
                return new DateTime().ToString();
            }
        }
    }

    public class Compte
    {
        [XmlElement("pseudo")]
        public string Pseudo { get; set; }
        [XmlElement("points_totaux")]
        public int PointsTotaux { get; set; }
        [XmlElement("points_economiques")]
        public int PointsEconomiques { get; set; }
        [XmlElement("points_militaires")]
        public int PointsMilitaires { get; set; }
        [XmlElement("progression_total")]
        public int ProgressionTotal { get; set; }
        [XmlElement("progression_economique")]
        public int ProgressionEconomique { get; set; }
        [XmlElement("progression_militaire")]
        public int ProgressionMilitaire { get; set; }
        [XmlElement("classement")]
        public int Classement { get; set; }
        [XmlElement("messages")]
        public int Messages { get; set; }
        [XmlElement("notifications")]
        public int Notifications { get; set; }
        [XmlElement("specialite_primaire")]
        public string SpecialitePrimaire { get; set; }
        [XmlElement("specialite_secondaire")]
        public string SpecialiteSecondaire { get; set; }

        public int AncienClassement { get { return Classement + ProgressionTotal; } }
        public bool IsUpProgressionEconomique { get { return ProgressionEconomique >= 0; } }
        public bool IsUpProgressionMilitaire { get { return ProgressionMilitaire >= 0; } }
        public bool IsUpClassement { get { return ProgressionTotal >= 0; } }
    }

    public class Zone
    {
        public Zone()
        {
            Batiments = new List<Addon.Batiment>();
        }
        [XmlElement("nom")]
        public string Nom { get; set; }
        [XmlElement("x")]
        public int X { get; set; }
        [XmlElement("y")]
        public int Y { get; set; }
        [XmlElement("slots_pris")]
        public int SlotsPris { get; set; }
        [XmlElement("slots_totaux")]
        public int SlotsTotaux { get; set; }
        [XmlElement("pierre")]
        public double Pierre { get; set; }
        [XmlElement("metal")]
        public double Metal { get; set; }
        [XmlElement("petrole")]
        public double Petrole { get; set; }
        [XmlElement("uranium")]
        public double Uranium { get; set; }
        [XmlElement("debris")]
        public double Debris { get; set; }
        [XmlElement("electricite_pris")]
        public int ElectricitePris { get; set; }
        [XmlElement("electricite_totale")]
        public int ElectriciteTotale { get; set; }
        [XmlArray("batiments")]
        [XmlArrayItem("batiment")]
        public List<Addon.Batiment> Batiments { get; set; }

        public int SlotsLibre { get { return SlotsTotaux - SlotsPris; } }
        public int ElectriciteLibre { get { return ElectriciteTotale - ElectricitePris; } }
    }
    
    [XmlType("addons")]
    public class Addon
    {
        public class Batiment
        {
            [XmlElement("nom")]
            public string Nom
            {
                get { return _Nom; }
                set
                {
                    _Nom = System.Web.HttpUtility.HtmlDecode(value);
                }
            }
            [XmlElement("niveau")]
            public int Niveau { get; set; }

            private string _Nom;
        }
        public class Technologie
        {
            [XmlElement("nom")]
            public string Nom
            {
                get { return _Nom; }
                set
                {
                    _Nom = System.Web.HttpUtility.HtmlDecode(value);
                }
            }
            [XmlElement("niveau")]
            public int Niveau { get; set; }

            private string _Nom;
        }
        public Addon()
        {
            Technologies = new List<Addon.Technologie>();
            Zones = new List<Zone>();
        }

        [XmlElement("systeme")]
        public Systeme Systeme { get; set; }
        [XmlElement("compte")]
        public Compte Compte { get; set; }
        [XmlArray("technologies")]
        [XmlArrayItem("technologie")]
        public List<Addon.Technologie> Technologies { get; set; }
        [XmlArray("zones")]
        [XmlArrayItem("zone")]
        public List<Zone> Zones { get; set; }


        public static Addon Create(XmlReader reader)
        {
            try
            {
                XmlSerializer xs = new XmlSerializer(typeof(Addon), new Type[] {
                        typeof(Systeme),
                        typeof(Compte)
                    });

                return (Addon)xs.Deserialize(reader);
            }
            catch (Exception e) { return null; }
        }
        public static Addon Create(string file)
        {
            try
            {
                using (Stream stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    return Create(XmlReader.Create(stream));
                }
            }
            catch (Exception) { return null; }
        }
    }
}


et le XAML
<Window x:Class="WpfAddon.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:ava="clr-namespace:Avalloc;assembly=Avalloc"
        Title="MainWindow" Height="560" Width="885">
    <Window.Resources>
        <ObjectDataProvider x:Key="Addon"
                            ObjectType="{x:Type ava:Addon}"
                            MethodName="Create">
            <ObjectDataProvider.MethodParameters>
                <system:String>Veuillez entrer le chemin vers votre fichier XML</system:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <Window.DataContext>
        <Binding Source="{StaticResource ResourceKey=Addon}" />
    </Window.DataContext>
    <Grid>
        <Label Content="Chemin fichier XML :"
               Height="25"
               HorizontalAlignment="Left"
               Margin="12,12,0,0"
               Name="label23"
               VerticalAlignment="Top"
               Width="115" />
        <TextBox Height="25"
                 Margin="127,12,12,0"
                 Name="textBox1"
                 VerticalAlignment="Top"
                 Text="{Binding Source={StaticResource ResourceKey=Addon}, BindsDirectlyToSource=True, Path=MethodParameters[0], UpdateSourceTrigger=PropertyChanged}" />
        <GroupBox Header="Infos Serveur"
                  Height="100"
                  HorizontalAlignment="Left"
                  Margin="12,37,0,0"
                  Name="gbServeur"
                  VerticalAlignment="Top"
                  Width="200"
                  DataContext="{Binding Systeme}">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="65" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Label Content="Serveur"
                       Height="25"
                       Margin="3,3,0,0"
                       Name="label1"
                       VerticalAlignment="Top" />
                <Label Content="Version"
                       Height="25"
                       Margin="3,28,0,0"
                       Name="label2"
                       VerticalAlignment="Top" />
                <Label Content="Date XML"
                       Height="25"
                       Margin="3,53,0,0"
                       Name="label3"
                       VerticalAlignment="Top" />
                <Label Content="{Binding Serveur}"
                       Height="25"
                       Margin="0,3,3,0"
                       Name="label4"
                       VerticalAlignment="Top"
                       Grid.Column="1" />
                <Label Content="{Binding Version}"
                       Height="25"
                       Margin="0,28,3,0"
                       Name="label5"
                       VerticalAlignment="Top"
                       Grid.Column="1" />
                <Label Content="{Binding DateSysteme}"
                       Height="25"
                       Margin="0,53,3,0"
                       Name="label6"
                       VerticalAlignment="Top"
                       Grid.Column="1" />
            </Grid>
        </GroupBox>
        <GroupBox Header="Compte"
                  HorizontalAlignment="Left"
                  Margin="12,149,0,0"
                  Name="gbCompte"
                  Width="200"
                  DataContext="{Binding Compte}"
                  Height="350"
                  VerticalAlignment="Top">
            <Grid>
                <Label Content="{Binding Pseudo}"
                       ContentStringFormat="Pseudo : {0}"
                       Height="25"
                       Margin="3,3,3,0"
                       Name="label7"
                       VerticalAlignment="Top" />
                <GroupBox Header="Points"
                          Height="100"
                          Margin="3,28,3,0"
                          Name="gpPoints"
                          VerticalAlignment="Top">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="90" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Label Content="Economique"
                               Height="25"
                               Margin="3,3,0,0"
                               Name="label8"
                               VerticalAlignment="Top" />
                        <Label Content="Militaire"
                               Height="25"
                               Margin="3,28,0,0"
                               Name="label9"
                               VerticalAlignment="Top" />
                        <Label Content="Total"
                               Height="25"
                               Margin="3,53,0,0"
                               Name="label10"
                               VerticalAlignment="Top" />
                        <Label Content="{Binding PointsEconomiques}"
                               Height="25"
                               Margin="0,3,3,0"
                               Name="label11"
                               VerticalAlignment="Top"
                               Grid.Column="1" />
                        <Label Content="{Binding PointsMilitaires}"
                               Height="25"
                               Margin="0,28,3,0"
                               Name="label12"
                               VerticalAlignment="Top"
                               Grid.Column="1" />
                        <Label Content="{Binding PointsTotaux}"
                               Height="25"
                               Margin="0,53,3,0"
                               Name="label13"
                               VerticalAlignment="Top"
                               Grid.Column="1" />
                    </Grid>
                </GroupBox>
                <GroupBox Header="Classement"
                          Height="100"
                          Margin="3,128,3,0"
                          Name="gbClassement"
                          VerticalAlignment="Top">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="90" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Label Content="Economique"
                               Height="25"
                               Margin="3,3,0,0"
                               Name="label14"
                               VerticalAlignment="Top" />
                        <Label Content="Militaire"
                               Height="25"
                               Margin="3,28,0,0"
                               Name="label15"
                               VerticalAlignment="Top" />
                        <Label Content="Actuel / Ancien"
                               Height="25"
                               Margin="3,53,0,0"
                               Name="label16"
                               VerticalAlignment="Top" />
                        <Label Content="{Binding ProgressionEconomique}"
                               Grid.Column="1"
                               Height="25"
                               Margin="0,3,3,0"
                               Name="label17"
                               VerticalAlignment="Top">
                            <Label.Style>
                                <Style>
                                    <Setter Property="Label.Foreground"
                                            Value="Red" />
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding IsUpProgressionEconomique}" Value="true">
                                            <Setter Property="Label.Foreground"
                                                    Value="Green" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Label.Style>
                        </Label>
                        <Label Content="{Binding ProgressionMilitaire}"
                               Grid.Column="1"
                               Height="25"
                               Margin="0,28,3,0"
                               Name="label18"
                               VerticalAlignment="Top">
                            <Label.Style>
                                <Style>
                                    <Setter Property="Label.Foreground"
                                            Value="Red" />
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding IsUpProgressionMilitaire}"
                                                     Value="true">
                                            <Setter Property="Label.Foreground"
                                                    Value="Green" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Label.Style>
                        </Label>
                        <Grid Grid.Column="1"
                              Margin="0,53,3,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*" />
                                <ColumnDefinition Width="1*" />
                            </Grid.ColumnDefinitions>
                            <Label Grid.Column="0"
                                   Content="{Binding Classement}">
                                <Label.Style>
                                    <Style>
                                        <Setter Property="Label.Foreground"
                                                Value="Red" />
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsUpClassement}"
                                                         Value="true">
                                                <Setter Property="Label.Foreground"
                                                        Value="Green" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Label.Style>
                            </Label>
                            <Label Grid.Column="1"
                                   Content="{Binding AncienClassement}">
                                <Label.Style>
                                    <Style>
                                        <Setter Property="Label.Foreground"
                                                Value="Red" />
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsUpClassement}"
                                                         Value="false">
                                                <Setter Property="Label.Foreground"
                                                        Value="Green" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Label.Style>
                            </Label>
                        </Grid>
                    </Grid>
                </GroupBox>
                <Label Content="{Binding Messages}"
                       ContentStringFormat="Messages : {0}"
                       Height="25"
                       Margin="3,228,3,0"
                       Name="label19"
                       VerticalAlignment="Top" />
                <Label Content="{Binding Notifications}"
                       ContentStringFormat="Notifications : {0}"
                       Height="25"
                       Margin="3,253,3,0"
                       Name="label20"
                       VerticalAlignment="Top" />
                <Label Content="{Binding SpecialitePrimaire}"
                       ContentStringFormat="1ère Spécialité : {0}"
                       Height="25"
                       Margin="3,278,3,0"
                       Name="label21"
                       VerticalAlignment="Top" />
                <Label Content="{Binding SpecialiteSecondaire}"
                       ContentStringFormat="2ème Spécialité : {0}"
                       Height="25"
                       Margin="3,303,3,0"
                       Name="label22"
                       VerticalAlignment="Top" />
            </Grid>
        </GroupBox>
        <GroupBox Header="Technologies"
                  HorizontalAlignment="Left"
                  Margin="224,37,0,12"
                  Name="gbTech"
                  Width="285">
            <Grid>
                <ListView Name="listView1"
                          ItemsSource="{Binding Technologies}">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Nom"
                                            Width="Auto"
                                            DisplayMemberBinding="{Binding Nom}" />
                            <GridViewColumn Header="Niveau"
                                            Width="60"
                                            DisplayMemberBinding="{Binding Niveau}" />
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </GroupBox>
        <GroupBox Header="Zones"
                  Margin="521,37,12,12"
                  Name="gbZones"
                  DataContext="{Binding Zones}">
            <Grid>
                <ComboBox Height="25"
                          HorizontalAlignment="Left"
                          Margin="3,3,0,0"
                          Name="cbZone"
                          VerticalAlignment="Top"
                          Width="150"
                          ItemsSource="{Binding .}"
                          HorizontalContentAlignment="Stretch">
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <Grid Width="Auto">
                                <TextBlock Text="{Binding Nom}" />
                                <TextBlock FlowDirection="RightToLeft"
                                           HorizontalAlignment="Right">
                                    <TextBlock.Text>
                                        <MultiBinding StringFormat="{}{0}:{1}">
                                            <Binding Path="X" />
                                            <Binding Path="Y" />
                                        </MultiBinding>
                                    </TextBlock.Text>
                                </TextBlock>
                            </Grid>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>
                <Label Content="{Binding Count}"
                       ContentStringFormat="Vous contrôlez {0} terrains"
                       Height="25"
                       Margin="153,3,3,0"
                       Name="label24"
                       VerticalAlignment="Top" />
                <TextBlock Height="25"
                           Margin="3,28,3,0"
                           VerticalAlignment="Top">
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}Place libre / prise / totale  : {0} / {1} / {2}">
                            <Binding ElementName="cbZone"
                                     Path="SelectedItem.SlotsLibre"
                                     FallbackValue="" />
                            <Binding ElementName="cbZone"
                                     Path="SelectedItem.SlotsPris"
                                     FallbackValue="" />
                            <Binding ElementName="cbZone"
                                     Path="SelectedItem.SlotsTotaux"
                                     FallbackValue="" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
                <GroupBox Header="Ressources"
                          Height="90"
                          Margin="3,53,3,0"
                          Name="gbRess"
                          VerticalAlignment="Top"
                          DataContext="{Binding ElementName=cbZone, Path=SelectedItem}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="60" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="60" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Label Grid.Row="0"
                               Grid.Column="0"
                               Content="Pierre" />
                        <Label Grid.Row="1"
                               Grid.Column="0"
                               Content="Métal" />
                        <Label Grid.Row="2"
                               Grid.Column="0"
                               Content="Pétrole" />
                        <Label Grid.Row="0"
                               Grid.Column="2"
                               Content="Uranium" />
                        <Label Grid.Row="1"
                               Grid.Column="2"
                               Content="Electricité" />
                        <Label Grid.Row="2"
                               Grid.Column="2"
                               Content="Débris" />

                        <Label Grid.Row="0"
                               Grid.Column="1"
                               Content="{Binding Pierre}" />
                        <Label Grid.Row="1"
                               Grid.Column="1"
                               Content="{Binding Metal}" />
                        <Label Grid.Row="2"
                               Grid.Column="1"
                               Content="{Binding Petrole}" />
                        <Label Grid.Row="0"
                               Grid.Column="3"
                               Content="{Binding Uranium}" />
                        <TextBlock Grid.Row="1"
                                   Grid.Column="3"
                                   VerticalAlignment="Center">
                            <TextBlock.Text>
                                <MultiBinding StringFormat="{}{0} / {1}">
                                    <Binding Path="ElectriciteLibre"
                                             FallbackValue="" />
                                    <Binding Path="ElectriciteTotale"
                                             FallbackValue="" />
                                </MultiBinding>
                            </TextBlock.Text>
                            <TextBlock.Style>
                                <Style>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding ElementName=cbZone, Path=SelectedIndex}"
                                                     Value="-1">
                                            <Setter Property="TextBlock.Visibility"
                                                    Value="Hidden" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </TextBlock.Style>
                        </TextBlock>
                        <Label Grid.Row="2"
                               Grid.Column="3"
                               Content="{Binding Debris}" />
                    </Grid>
                </GroupBox>
                <ListView Margin="3,146,3,3"
                          Name="listView2"
                          ItemsSource="{Binding ElementName=cbZone, Path=SelectedItem.Batiments}">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Nom"
                                            Width="Auto"
                                            DisplayMemberBinding="{Binding Nom}" />
                            <GridViewColumn Header="Niveau"
                                            Width="60"
                                            DisplayMemberBinding="{Binding Niveau}" />
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </GroupBox>
        
    </Grid>
</Window>


Il me semble avoir tout mis ce qu'il faut :)

#3 L'utilisateur est hors-ligne   DarkPhoenix Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 377
  • Inscrit(e) : 15-février 10

Posté 16 février 2010 - 16:58

arête tu va le dégouté a vie ^^

#4 L'utilisateur est hors-ligne   vivien Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 13-février 10

Posté 16 février 2010 - 17:56

sympa :D mais j'utilise pas C# :D j'ai du mal en C donc pour C# on verra plus tard hein ;)

#5 L'utilisateur est hors-ligne   DarkPhoenix Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 377
  • Inscrit(e) : 15-février 10

Posté 16 février 2010 - 18:07

t'as du mal en C et tu code en PHP ... en général on commence par apprendre le C/C++ qui est la base de tout langage informatique ( enfin presque tout)

#6 L'utilisateur est hors-ligne   zombre Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 221
  • Inscrit(e) : 15-février 10
  • LocationDerrière toi !

Posté 17 février 2010 - 01:57

Voir le messageDarkPhoenix, le 16 février 2010 - 18:07, dit :

t'as du mal en C et tu code en PHP ... en général on commence par apprendre le C/C++ qui est la base de tout langage informatique ( enfin presque tout)


plus trop maintenant, le procédurale se perds dans la brume, l'orienter objet s'incruste partout...

les cursus logiques ne sont plus trop d'actu :rolleyes:

cependant je suis de assez de ton avis, mettre la charrue avant le boeuf n'est jamais profitable sur le long terme...

ont vois de plus en plus de dev php étudier d'abords le htlm et le css puis passer direct au php en apprenant sur le tas
Image IPB

#7 L'utilisateur est hors-ligne   Te8teur Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 63
  • Inscrit(e) : 31-janvier 10
  • LocationRhône-Alpes

Posté 17 février 2010 - 01:58

Perso j'ai fait Html puis C puis Php.
Je ne connais que les bases du C mais je dois avouer que ça m'a bien aider pour le Php tous de même !

Mais on s'égare ...
Image IPB
Pour accéder à mon site S-Universe .:: Actu et multimédia sur Stargate Universe ::.
Pour accéder à mon site perso .:Site perso de Te8teur:.

#8 L'utilisateur est hors-ligne   Tirias Icône

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 21
  • Inscrit(e) : 18-février 10

Posté 18 février 2010 - 10:45

Personnellement pour "faire" un parseur de xml j'utiliserai DOM :)

#9 L'utilisateur est hors-ligne   vivien Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 13-février 10

Posté 18 février 2010 - 11:55

J'ai envie de dire : fais le :D

#10 L'utilisateur est hors-ligne   Tirias Icône

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 21
  • Inscrit(e) : 18-février 10

Posté 18 février 2010 - 12:30

Citation

J'ai envie de dire : fais le :D

Je vais le faire c'est un truc tout simple puisque DOM fais tout :)
Attend tu me met au défi là ? :P

#11 L'utilisateur est hors-ligne   vivien Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 13-février 10

Posté 18 février 2010 - 12:49

bah ouais :D

#12 L'utilisateur est hors-ligne   Tirias Icône

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 21
  • Inscrit(e) : 18-février 10

Posté 18 février 2010 - 16:02

Allé je te donne une piste. Y'a juste quelque chose de dur à gérer c'est la récurrence ce certains champs de le flux xml :
Genre <nom>, <niveau>, <technologie>, <batiment>
C'est assez génant, faut que je réfléchisse a comment parer ce soucis là --"
<?php
class Worker
{
	private $docxml;
	private $extracts = array();
	public function __construct()
	{
		$this->docxml = new DOMDocument(); 
	}
	
	public function __get($var)
	{
		if(property_exists('Worker', $var)) {
			return $var;
		}
	}
	
	public function begin($tag, $subject) 
	{
		if(is_file($subject)) {
			$this->docxml->load($subject);
		}
		$elements = $this->docxml->getElementsByTagName($tag);
		$tree = $elements->item(0);
		return $tree;
	}
	
	public function parse($tree)
	{
		foreach($tree->childNodes as $value) {
			if($value->hasChildNodes()) {
				$this->parse($value);		
			}
		}
	}
	
}

$worker = new Worker();
$tree = $worker->begin('addons', 'adds.xml');
$addons = $worker->parse($tree);


EDIT : J'ai réfléchis, la seule manière c'est sans doute de vérifier la chaine avant le parsage.

#13 L'utilisateur est hors-ligne   vivien Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 13-février 10

Posté 18 février 2010 - 17:33

ouaip, je pense que c'est un truc comme ca :D

#14 L'utilisateur est hors-ligne   DarkPhoenix Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 377
  • Inscrit(e) : 15-février 10

Posté 18 février 2010 - 19:09

tirias, tu sera confronté a un problème même avec ta version. il faut juste que tu la modifie un peu mais il faut aussi vérifié les Parent du noeud "Nom" pour voir si c'est une techno, un bat etc.

#15 L'utilisateur est hors-ligne   Tirias Icône

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 21
  • Inscrit(e) : 18-février 10

Posté 18 février 2010 - 20:15

En fait mon but est simple : récupérer sous forme d'array ce qui est sous forme XML :P (un peu normal quoi ^^) : mais je crois qu'il faut que je garde l'architecture du format XML donc que je change bcp de chose :s
le gros problème c'est les <nom>, <niveau>, <technologie>, <batiment>. Je sais pas comment les aborder en fait...

#16 L'utilisateur est hors-ligne   Tyrius Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 153
  • Inscrit(e) : 23-février 10

Posté 27 février 2010 - 12:14

Personnellement, j'ai fait un script plus ou moins identique, avec des regex.
Oui, bon, c'est bien moins classe, j'avoue, mais ça marche pas trop mal.

<?php
$xml = file_get_contents("addon.xml");
preg_match('#<systeme>(.+)</systeme>#Usi', $xml, $systeme);//De quoi récupérer toute la partie système.
preg_match('#<server>(.+)</server>#Usi', $systeme[1], $server);//Le serveur.

//Ensuite les données du compte.
preg_match('#<compte>(.+)</compte>#Usi', $xml, $compte);
preg_match('#<pseudo>(.+)</pseudo>#Usi', $compte[1], $pseudo);//Pour récupérer son pseudo...
?>


Bon, du coup, ça permet de faire un truc comme ma signature :)
Avec mise à jour plus ou moins callée avec celle des statistiques...
Pour ce qui est des bâtiments et tout, j'ai plus mon script en tête, mais avec un preg_match_all(); tu récupère toutes les zones, puis avec un petit foreach tu récupère les infos de chacune d'entre elle, que tu passe dans des tableaux.

Enfin voilà, moi ça marche, mais pas du tout de la même façon que l'original... :lol:

Bon jeu ;)

#17 L'utilisateur est hors-ligne   DarkPhoenix Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 377
  • Inscrit(e) : 15-février 10

Posté 27 février 2010 - 15:58

je voulais faire un widget mais avec FF 3.6 et IE8 je peux pas récupéré le fichier XML.
un de mes profs m'a dit qu'il fallait importé le fichier XML avec PHP ou un autre language mais bon, ca suppose que j'ai easy-php / wamp qui tourne en permenance pour récup le fichier XML et qu'ensuite le widget aille récup le fichier .

donc du coup au lieu d'avoir le fichier en 1 seul coup je le fait en 2 temps ...
en plus , avec easyphp et wamp ca me coupe l'accès a skype a cause du port 80 ^^.
donc je suis presque forcé d'abandonné mon projet

#18 L'utilisateur est hors-ligne   Tyrius Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 153
  • Inscrit(e) : 23-février 10

Posté 27 février 2010 - 16:49

:o Je suis en train de voir pour les widgets... Mais comment dire. Mon cerveau a beau fumer, j'arrive pas à faire autre chose qu'un panneau accessible directement, au lieu d'un truc dans la barre de statut.

Tu as pensé à un petit peu d'ajax ? :)
Parce qu'avec l'objet XML HTTP Request tu devrais pouvoir récupérer ce que tu veux facilement... Après, hmm, le truc c'est que c'est pas trop le sujet, ici :lol:

#19 L'utilisateur est hors-ligne   DarkPhoenix Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 377
  • Inscrit(e) : 15-février 10

Posté 27 février 2010 - 17:33

non, pasqu'il y a depuis quelques années le Cross Domain, qui fonctionne de la même manière qu'un Proxy. mais bon, on peut toujours demandé au staff de créé un flux RSS ca sera peut être possible de faire des truc avec plus facilement ^^. comme avec hordes par exemple.

#20 L'utilisateur est hors-ligne   Tyrius Icône

  • Membre régulier
  • PipPipPip
  • Groupe : Membres
  • Messages : 153
  • Inscrit(e) : 23-février 10

Posté 27 février 2010 - 19:03

Hmm, effectivement. J'vais tester de voir si ça fonctionne quand même :P

On ne sait jamais :lol:

EDIT : Et non, ça ne marche pas. J'suis sur un site pas mal qui traite le sujet, mais compliqué quand même...

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)