• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tut gesucht (Auslesen einer xml seite)

Status
Für weitere Antworten geschlossen.

Keinnim

Neues Mitglied
Moin

Ich möchte mich anhand eines scriptversuches etwas in php einarbeiten.

Ziel ist es daten aus dieser seite http://guilds.camelotherald.com/guilds/Ector/1081.xml auszulesen .

Leider bekomme ich in meinem buch keine genauen infos zu diesem thema oder ich überlese sie :oops:

Das öffnen der seite geht mit fopen soweit bin ich nun schon,nur wie bekomme ich es auf die reihe mit meinem script einzelne datenblöcke in variablen zu speichern ?
Gibt es ein Tut zu diesem thema oder kann mir wer ein beispiel posten wie ich zum bsp von guild name="I unleashed I" das I unleashed I in $guild_name bekomme ?
 
Warum nicht einfach so:
PHP:
$daten = simplexml_load_file("datei.xml");
echo $daten->ersteEbene->zweiteEbene->feldMitWert;
echo $daten->ersteEbene->zweiteEbene->feldMitAttribut['foo'];

Würde zum Beispiel bei folgender XML-Datei "Hallo Welt! bar" ausgeben.
Code:
<?xml version="1.0" encoding="utf-8">

<datei>
  <ersteEbene>
    <zweiteEbene>
      <feldMitWert>Hallo Welt!</feldMitWert>
      <feldMitAttribut foo="bar">Text</feldMitAttribut>
    </zweiteEbene>
  </ersteEbene>
</datei>
Ich hoffe es wird klar wies funktioniert, sonst hilft vielleicht das hier: Wahlalternative: XML :: Jahn Dominik
 
also seid php5 gibt es die schöne funktion "simplexml_load_file"

damit kannst du deine datei einfach öffnen

PHP:
<?php

ini_set('zend.ze1_compatibility_mode', 0);
header('Content-Type: text/plain');
define('nl', "\n");

$xml = simplexml_load_file('http://guilds.camelotherald.com/guilds/Ector/1081.xml');

foreach($xml->guild->character as $char)
{
    echo '===================='.nl;
    echo 'Name:   '.$char['name'].nl;
    echo 'ID:     '.$char['id'].nl;
    echo 'Server: '.$char['server'].nl;
    echo 'Laston: '.$char['laston'].nl;
    echo '===================='.nl;
    
    // Hier könntest du noch mittels
    // echo $char->race;
    // oder
    // echo $char->class;
    // andere informationen ausgeben :)
    //
    // Hier dazu alle möglichen variablen die eigentlich
    // selbsterklärend sind ;)
    //
    // race, class, level, mlevel, mpath, guildrank, anon,
    // totalrp, lastweekrp, totaldeaths, lastweekdeaths
    //
    // diese werden immer an $char-> angehängt also z.b.
    // $char->lastweekrp ;)
    //
    // MFG
}

?>

an alle anderen bitte nciht meckern das ich ihm die ganze arbeit abgenommen habe denn irgendwann wirds einfach zu schwer für einen anfänger der nichtmal google bedienen kann ;)
 
Zuletzt bearbeitet von einem Moderator:
Danke schon mal an euch zwei :) hat mir sehr geholfen .

Eben nochmal zu dem thema googel,hab ich schon benutzt nur wenn du bei 0 anfängst suchst sicher gleich immer nach den richtigen befehlen.meine treffen gingen halt immer richtung fopen und damit hab ich es halt versucht.

P.S Bis jetzt schaut das ganze so aus bei mir aus

Code:
<?php  // xmlget.php

//   Xml Datei auslesen

$xml = simplexml_load_file('http://guilds.camelotherald.com/guilds/ector/1081.xml');

// Gildeninfo

foreach($xml->guild as $guild)

$gilde_name        = $guild['name'];
$gilde_realm       = $guild['realm'];
$gilde_guildrp     = $guild['guildrp'];
$gilde_guildlastrp = $guild['guildlastrp'];
$gilde_sshield     = $guild['sshield'];
$gilde_semblem     = $guild['semblem'];

// Charinfo

foreach ($xml->guild->character as $char)

[COLOR=#000000][COLOR=#0000bb]?>[/COLOR][/COLOR]

Nun will ich an die daten in character ran,die ausgabe von daten kommt erst später :)
 
also zu deinem google problem da hast du natürlich recht... bei der suche nach "php xml" steht die lösung auch erst an zweiter stelle ;) *gg*

zu deinem script das würde so sicherlich viel besser aussehen ;)

PHP:
<?php

ini_set('zend.ze1_compatibility_mode', 0);
header('Content-Type: text/plain');
define('nl', "\n");

$xml = simplexml_load_file('http://guilds.camelotherald.com/guilds/Ector/1081.xml');

$gilde_name        = $xml->guild['name'];
$gilde_realm       = $xml->guild['realm'];
$gilde_guildrp     = $xml->guild['guildrp'];
$gilde_guildlastrp = $xml->guild['guildlastrp'];
$gilde_sshield     = $xml->guild['sshield'];
$gilde_semblem     = $xml->guild['semblem'];

foreach($xml->guild->character as $char)
{
    echo '===================='.nl;
    echo 'Name:   '.$char['name'].nl;
    echo 'ID:     '.$char['id'].nl;
    echo 'Server: '.$char['server'].nl;
    echo 'Laston: '.$char['laston'].nl;
    echo '===================='.nl;
}

?>
 
Da bin ich wieder,is doch nicht ganz so leicht die sache mit dem php ^^

PHP:
<?php           // test.php
include('xmlget.php');
$bild         = imagecreatefrompng('morb.png');
$fonttype1  = 'dc_s.ttf';
$fonttype2  = 'mtcors.ttf';
$fonttype3  = 'arial.ttf';
$fonttype4  = '*.ttf';
$color1     = imagecolorallocate($bild,255,255,255);
$color2     = imagecolorallocate($bild,0,0,0);
imagestring($bild,2,2,0,'Test',$color2);
header("Content-Type: image/png");
imagepng ($bild);
imageDestroy ($bild);


?>
Ohne die Include bekomme ich die ausgabe des bildes,mit nur datensalat :(
Da ich aber daten aus der xmlget.php brauche gehts nicht ohne.
header vor "include" bringt mir auch nur eine fehlermeldung.
muss ich das ganze gleich von anfang an in eine html seite bauen oder hab ich nur was im script falsch ?
 
PHP:
<?php  // xmlget.php
//
//   Xml Datei auslesen
//
$xml = simplexml_load_file('http://guilds.camelotherald.com/guilds/ector/1081.xml');
//
// Gildeninfo  Fertig
//
$gilde_name        = $xml->guild['name'];
$gilde_realm       = $xml->guild['realm'];
$gilde_guildrp     = $xml->guild['guildrp'];
$gilde_guildlastrp = $xml->guild['guildlastrp'];
$gilde_chars       = $xml->guild['activechars'];
$gilde_member      = $xml->guild['activemembers'];
$gilde_Kont        = $xml->guild['contacturl'];
$gilde_Web         = $xml->guild['websiteurl'];
$gilde_haus        = $xml->guild['guildhouse'];
$gilde_sshield     = $xml->guild['sshield'];
$gilde_semblem     = $xml->guild['semblem'];
$gilde_keep        = $xml->guild['keepowned'];
//
// Charinfo   Noch in Arbeit
//
$char_name[0]        = $xml->guild->character['name'];
$char_class[0]       = $xml->guild->character['class'];
$char_totalrp[0]     = $xml->guild->character['totalrp'];
$char_lastweekrp[0]  = $xml->guild->character['lastweekrp'];
$char_totald[0]      = $xml->guild->character['totaldeaths'];
$char_lastd[0]       = $xml->guild->character['lastweekdeaths'];
?>

das ist die xmlget.php
 
alle, die mit php4 werkeln müssen haben es da leider etwas schwerer. wen's interessiert, hier mal ein uralter rdf/xml parser
ich habe das in meinem portal im einsatz, daher sind style anpassungen etc selber zu machen.

PHP:
<?PHP
// xml und rdf parser

?><link rel="stylesheet" href="<?=$config['temp_css_file']?>" type="text/css"><?

$show_prenews = 1;

$heisecontet = join ('', file ('http://www.netzeitung.de/export/news/rss/vermischtes.xml'));
// $heisecontet = join ('', file ('http://www.heise.de/newsticker/heise.rdf'));

// $heisecontet = join ('', file (trim(chop($nfile[$wahl])))); // news ticker
$heisecontet = str_replace ("</item>", "", $heisecontet);
$heisecontet = str_replace ("</link>", "^", $heisecontet);

$splices = explode ("<item>", $heisecontet);
$akt_td = "td2";

$link = explode("<link>",$splices[0]);
$link[1] = strip_tags($link[1]);
$lunk = explode("^",$link [1]);
$myhead = explode("<title>",$splices[0]);
$myhead2 = explode("</title>",$myhead[1]);

$headline = "<a href=\"" . trim($lunk[0]) . "\" target=\"_blank\"><span class=\"thnorm\">".$myhead2[0]."</span></a>";
// $headline = str_replace ("</title>", "</span></a>", $headline);
// $headline = explode ("<link>", $headline);
// $headline = $headline[0];

?>
<br>
<center>
<table class="tbl" border="<?=$tabelle_border?>" width="100%" cellspacing="<?=$cell_spacing?>" cellpadding="<?=$cell_padding?>">
<tr>
    <td class="thnorm" align="left"><?=$headline?></td>
</tr>
<?
for ($i = 1; $i < count($splices); $i++)
{
    $akt_td = "td1";
    // if($akt_td == "td2") $akt_td = "td1";
    // else $akt_td = "td2";
    ?>
    <tr>
        <td class="<?=$akt_td?>"><fieldset><span class="small">
        <?
        $link = explode("<link>",$splices[$i]);
        $link[1] = strip_tags($link[1]);
        $lunk = explode("^",$link [1]);

        if($show_prenews == 0 and $smover == 1) $mouover = trim($lunk[1]); // mouseover texte einschalten wenn vorschau inaktiv
        else $mouover = "";
        $headline = str_replace ("<title>", "<legend><b><a href=\"" . trim($lunk[0])."\" target=\"_blank\" class=\"small\" title=\"".$mouover."\">", $splices[$i]);
        $headline = str_replace ("</title>", "</a></b></legend></span>", $headline);
        $headline = explode ("<link>", $headline);
        $headline = $headline[0];

        echo $headline;
        if($show_prenews == 1)
        {
            // $lunk[1] = preg_replace ("/[^���\-\@\+\*\\w]/", " ", $lunk[1]);
            echo "<span class=\"small\">".$lunk[1]."</span>";
        }

        ?>
        </span></td></fieldset>
    </tr>
    <?
}
?>
</table>
</center>
einen utf-8 decoder etc könnte/sollte man auch noch einbauen, da viele xml und rdf files mittlerweise utf8 decoded sind.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben