Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

XML sur serveur free

Par Arkahn Crystal le 21/5/2002 à 17:33:28 (#1501108)

Coocoo, quelqu'un sait comment incorporer le xml sur sa page perso ? Parceque j'ai rien compris sur camelot europe

Par Arkahn Crystal le 22/5/2002 à 12:44:54 (#1505839)

plz help

Par Anduric le 23/5/2002 à 3:46:33 (#1511094)

Là t'es en train de poser la question "apprenez moi le xml", ce qui est un peu rédhibitoire.

En gros pour simplifier, la feuille xml c'est juste le contenu. Il te faut définir la façon dont les infos sont affichées. Il y a plusieurs méthodes pour cela, je te conseille les feuilles de styles xsl (pas xls, hein :))

En cherchant sur Internet, tu pourras trouver des sites de tutorial très bien fait sur xml/xsl (c'est ceux là que j'ai vu, mais j'ai oublié le nom, et j'ai perdu mes favori, recemment. Sans compter qu'il est tard).

Le gros problème pour les infos vient du fait que tu dois importer la feuille xml et fournir le xsl.

Pour simplifier, et parce que je devrais vraiment aller me coucher, voici comment j'ai fait pour tester.

La page que tu appelle avec ton navigateur (genre index.html, etc) :




// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("http://www.camelot-europe.com/herald/nb_connected.xml")

// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("formatage.xsl")

// Transform
document.write(xml.transformNode(xsl))





Ce fichier va chercher le xml chez Mythic, le mixe avec le formatage.xsl et affiche le résultat.

Pour exemple, mon fichier formatage.xsl (qui affiche de façon grossière la population des serveurs)




























Voilà... maintenant je te laisse te dépatouiller avec tout ça, sachant que les résultats s'affichent à priori dans la fenêtre complète (document.write du premier fichier), et que si tu veux afficher ça plus proprement, faut faire des efforts. Par exemple, tu peux faire comme sur le site officiel et utiliser des .

Bon amusement.

Par pmichy le 25/5/2002 à 16:30:22 (#1526030)

d'ailleur j'avais fait une page sur les stat des serveur :
http://www.indemag.com/daoc/serveur.php
les fort en rouge sont les fort pris ressament

en cherchant un peu sur les site tu trouve facilement des info

Par Arkahn Crystal le 26/5/2002 à 5:05:11 (#1529462)

Ha yesssss...thx j'avais pas vu le xml comme ça =)
En tout cas thx pour les explication Anduric, idem pour pmichy

Par Arkahn Crystal le 26/5/2002 à 6:07:02 (#1529516)

Vi ben je me suis emballé, mais ca donne pas ce que j'esperais ( erf :aide: )

Donc site quelqu'un avait la grandeur d'âme de me faire un modele de xsl dans laquelle il n'y aurait que l'info de Ys avec l'état ( on off ) et le nombre de personnes connectées. Toi ça en blanc et l'info l'une sur l'autre. Merci d'avance ( chui pas sur que tout ça se passe sur le xsl mais bon :/ )

Par pmichy le 26/5/2002 à 18:00:24 (#1531977)

Va voir sur ce site, j'avais commencer avec son exemple :
http://www.unixtech.be/docs/php-fr/ref.xml.html

Par pmichy le 26/5/2002 à 18:16:31 (#1532094)

J'ai oublier de dir que pour ce que tu veux tu dois verifier la fonction startElement et characterData.

Dans startElement tu as les info a l'interieur d'une balise comme :


Dans characterData tu as ce qui est en gras :

Albion



Donc tu dois verifier dans le StartElement la variable $attrs en faisant :

while (list($k, $v) = each($attrs))
{
if ($k=="NAME")
{
.......................
}
}


Pour ton cas tu dois verifier :
1) que ce soit bien Ys avec les attrs de Startelement
2) Attendre que ce soit population toujours dans startelement
3)recuperer quand les 2 autre point son valide la valeur dans characterData


Bon c'est sans compter si j'ai bien tout compris, et cela est en php

Par Arkahn Crystal le 26/5/2002 à 18:53:59 (#1532332)

erf ben vi....connait pas le php non plus ( raooooooorrrrrr damnationnnnnnnnnnnn )



PS: kel monde injuste

Par pmichy le 26/5/2002 à 22:14:20 (#1533524)

Bon, d'apres ce que j'ai compris ce que tu voulais voila un code en php (tu cree un fichier text, tu met sa et tu nomme le fichier avec l'extension php ou php3)

Ce programme est aussi sur :
http://www.indemag.com/daoc/ys.php

Bon c'est peut etre pas super optimiser, mais c'est pas mon boulot :) d'ailleur si quelqu'un veut bien optimiser sa je suis preneur :)

<?
$file="http://www.camelot-europe.com/herald/nb_connected.xml";
$i=$j=0;

function startElement($parser, $name, $attribs)
{
global $i,$j;

if ((sizeof($attribs))&&($name=="SERVER"))
{
while (list($k, $v) = each($attribs))
{
if (($k=="NAME")&&($v=="Ys"))
{
$i=1;
}

}
}

if (($i==1)&&($name=="POPULATION")) $j=1;
if (($i==1)&&($name=="STATUS")) $j=2;
}


function endElement($parser, $name)
{
}


function characterData($parser, $data)
{
global $j,$i;


if ($j==1)
{
echo "Le serveur Ys a une population de : $data";
$j=0;
}

if ($j==2)
{
echo "Le status du serveur Ys est : $data";
$j=$i=0;
}
}


$xml_parser = xml_parser_create();
// use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, TRUE);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);


?>

Par Axxis le 27/5/2002 à 9:12:59 (#1534969)

Bonjour,

Voici mon script asp qui marche en local, mais efrance.fr n'accepte pas le load du fichier xlm :-(

Quelqu'un aurait-il une astuce ?

Merci d'avance :-)

<%
Response.Buffer = True

Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false

xmlDoc.load("http://www.camelot-europe.com/herald/nb_connected.xml")

Excalibur = xmlDoc.documentElement.childNodes.item(0).text
Broceliande = xmlDoc.documentElement.childNodes(1).text
Avalon = xmlDoc.documentElement.childNodes(2).text
Lyonesse = xmlDoc.documentElement.childNodes(3).text
Ys = xmlDoc.documentElement.childNodes(4).text
Prydwen = xmlDoc.documentElement.childNodes(5).text
Stonehenge = xmlDoc.documentElement.childNodes(6).text
Logres = xmlDoc.documentElement.childNodes(7).text
Orcanie = xmlDoc.documentElement.childNodes(8).text

set xmlDoc =Nothing

response.write ("Excalibur : " & Excalibur & ")
response.write ("Broceliande : " & Broceliande & ")
response.write ("Avalon : " & Avalon & ")
response.write ("Lyonesse : " & Lyonesse & ")
response.write ("Ys : " & Ys & ")
response.write ("Prydwen : " & Prydwen & ")
response.write ("Stonehenge : " & Stonehenge & ")
response.write ("Logres : " & Logres & ")
response.write ("Orcanie : " & Orcanie & ")

%>

Par Okam le 27/5/2002 à 12:19:53 (#1535731)

Un autre exmple (nb de connectés et appartenance des forts) pour le serveur Ys est visible sur le site de ma guilde :

http://membres.lycos.fr/letrounoir/daoc/membres/etat_serveurs.php

pour obtenir les pages php, contactez-moi.

Par pmichy le 27/5/2002 à 13:49:42 (#1536222)

Sa m'interesse Okam, tu peux pas le mettre ici le code ?

Par Okam le 27/5/2002 à 20:05:42 (#1538399)

1° partie - lecture du fichier xml
======================

J'ai modifié le code disponible sur le Herald pour filtrer le serveur Ys et pour gérer également les forts/reliques. Toutes les données sont écrites dans des variables (voir 2e partie)


fichier xml.inc.php :




2° partie - mise en page
=================

page php qui appelle xml.inc.php et utilise les données extraites




Etat du Serveur Ys

body {
margin:0px; padding:0px; font-family:verdana, arial, helvetica, sans-serif;
color:#FFFFFF; background-color:gray;}

p {
font:11px verdana, arial, helvetica, sans-serif; padding:0px;}

td { font-size: 11px;color: #FFFFFF; }

a {color: #00AA9F;font-size:11px;text-decoration:none;
font-weight:600;font-family:verdana, arial, helvetica, sans-serif;}

a:link {color: #00AA9F;}
a:visited {color: #00AA9F;}
a:hover {color: #FFFFFF;}



.darktable { border: #A0A0A0 1px solid; background-color: #246E8C; font-size: 11px; font-color: #FFFFFF }
.lighttable { border: #A0A0A0 1px solid; background-color: #000000; font-size: 11px; font-color: #FFFFFF }
.cont { font-size: 11px; color: #FFFFFF; }
.wcont { font-size: 11px; color: #FFFFFF; }
.input { font-size: 11px; border: #A0A0A0 1px solid }
.inputbutton { font-size: 11px; border: #A0A0A0 1px solid; background-color: #CCCCDD }





<?
include("xml.inc.php");

function extrait3 ($chaine,&$value1,&$value2,&$value3){
$value=$chaine;
$pos=strpos($value,";");
$value1=substr($value,0,$pos);
$value=substr($value,$pos-strlen($value)+1);
$pos=strpos($value,";");
$value2=substr($value,0,$pos);
$value3=substr($value,$pos-strlen($value)+1);
}
function extrait4 ($chaine,&$value1,&$value2,&$value3,&$value4){
$value=$chaine;
$pos=strpos($value,";");
$value1=substr($value,0,$pos);
$value=substr($value,$pos-strlen($value)+1);
$pos=strpos($value,";");
$value2=substr($value,0,$pos);
$value=substr($value,$pos-strlen($value)+1);
$pos=strpos($value,";");
$value3=substr($value,0,$pos);
$value4=substr($value,$pos-strlen($value)+1);
}

print "\n";
print "Serveur $da_etat_serveur[1] : ";
$etat=$da_etat_serveur[2];
if ($etat[0]=='U') {print "$da_etat_serveur[3] connectés";}
else {print "Down";}

print "\n";
print ";
for($i=1;$i<8;$i++){
print";
extrait3($da_etat_fort[$i],$w1,$w2,$w3);
if (strpos($w3,"A") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w1$b1$w3$b2\n";
extrait3($da_etat_fort[$i+7],$w1,$w2,$w3);
if (strpos($w3,"M") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w1$b1$w3$b2\n";
extrait3($da_etat_fort[$i+14],$w1,$w2,$w3);
if (strpos($w3,"H") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w1$b1$w3$b2\n";
print";
}
print ";

print "\n";
print ";
for($i=1;$i<3;$i++){
print";
extrait4($da_etat_relique[$i],$w1,$w2,$w3,$w4);
if (strpos($w4,"A") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w2$w1$b1$w4$b2\n";
extrait4($da_etat_relique[$i+2],$w1,$w2,$w3,$w4);
if (strpos($w4,"M") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w1$b1$w4$b2\n";
extrait4($da_etat_relique[$i+4],$w1,$w2,$w3,$w4);
if (strpos($w4,"H") === FALSE) {$b1="; $b2=";} else {$b1="; $b2=";}
print "$w1$b1$w4$b2\n";
print";
}
print ";

?>




****************

Voilà c'est un peu long (et sûrement pas optimisé) , bonne lecture ;)

Par pmichy le 27/5/2002 à 21:32:46 (#1539009)

oui c'est en gros la meme technique que la mienne mais tu utilise 2 fichier.

Par Anduric le 27/5/2002 à 21:36:15 (#1539036)

Précision : ma méthode (xml+xsl) marche côté client. Si celui qui vient vous voir a une relique du passé, l'affichage sera incorrect

JOL Archives 1.0.1
@ JOL / JeuxOnLine