Avatar billede fixbabe Nybegynder
07. august 2008 - 13:29 Der er 17 kommentarer og
2 løsninger

xml til variabel

<?xml version="1.0" encoding="iso-8859-1"?>
<content>
        <server>
                <name>navn</name>
                <gametype>spil</gametype>
                <map>de_train</map>
                <numplayers>0</numplayers>
                <max>250</max>
        </server>
</content>

Hvordan får jeg de forskellige ting trukket ud som variabler?

<max>250</max> bliver til $max = 250;
Avatar billede w13 Novice
07. august 2008 - 13:31 #1
Avatar billede janpolsen Nybegynder
07. august 2008 - 13:37 #2
Der findes flere måde at tilgå XML-filer, alt hvad dit formål er.

Skal du bare tilgår indholdet og ikke skrive så meget til strukturen, så er PHPs egen simple_xml() (http://dk.php.net/manual/en/book.simplexml.php) ganske nem og effektiv:
<?php
$xml = simplexml_load_file('test.xml');
var_dump($xml);
?>

Skal du rode med strukturen, tilføje og fjerne elementer, så kig evt. på PHPs DOM XML (http://dk.php.net/manual/en/book.domxml.php). Man kan også konvertere en XML-fil frem og tilbage mellem de to objekter.
Avatar billede fixbabe Nybegynder
07. august 2008 - 13:43 #3
Jan, jeg glemte helt at oplyse at jeg har mit xml som en variabel og ønsker den delt op i hver enkelt "output"
Avatar billede w13 Novice
07. august 2008 - 13:51 #4
Så du har den som tekst eller som noder?
Avatar billede jakobdo Ekspert
07. august 2008 - 14:02 #5
Avatar billede fixbabe Nybegynder
07. august 2008 - 14:19 #6
w13 - jeg har den som den er pastet ovenover bare i en variabel
Avatar billede w13 Novice
07. august 2008 - 14:21 #7
Dvs. som tekst? :)
Avatar billede w13 Novice
07. august 2008 - 14:21 #8
Det er variabletypen, jeg fisker efter.
Avatar billede jakobdo Ekspert
07. august 2008 - 14:30 #9
<?php
//http://www.eksperten.dk/spm/840776

$xml_string = '<?xml version="1.0" encoding="iso-8859-1"?>
<content>
        <server>
                <name>navn</name>
                <gametype>spil</gametype>
                <map>de_train</map>
                <numplayers>0</numplayers>
                <max>250</max>
        </server>
</content>';

$xml = simplexml_load_string($xml_string);

echo $xml->server[0]->max;

?>
Avatar billede janpolsen Nybegynder
07. august 2008 - 14:38 #10
Hvis du VIL have dem i variabler som du skriver, så gør følgende dette:
<?php
$xml = simplexml_load_file("test.xml");

$result = $xml->xpath("server");
foreach ($result[0] AS $var => $val) {
    $$var = $val;
}

print_r($result);

echo "max = {$max}";
?>
Avatar billede fixbabe Nybegynder
07. august 2008 - 15:06 #11
jakobdo og janpoulsen vil i være venlige at smide et svar? begge jeres løsninger virkede. Tak for hjælpen
Avatar billede janpolsen Nybegynder
07. august 2008 - 15:24 #12
:)
Avatar billede jakobdo Ekspert
07. august 2008 - 15:34 #13
Svar!
Avatar billede jakobdo Ekspert
07. august 2008 - 15:45 #14
Takker for point.
Avatar billede janpolsen Nybegynder
07. august 2008 - 15:47 #15
... og det samme her.
Avatar billede fixbabe Nybegynder
08. august 2008 - 16:19 #16
Jeg har et lille tillæg på 30 point.
unser "server" er der feltet "status" som jeg gerne vil have hentet ud også, hvordan?

<content>
        <server status="UP">
                <name>navn</name>
                <gametype>spil</gametype>
                <map>de_train</map>
                <numplayers>0</numplayers>
                <max>250</max>
        </server>
</content>
Avatar billede fixbabe Nybegynder
08. august 2008 - 16:20 #17
Det skal lige siges at "server" indeholder følgende:

<server type="HLA2S" address="ip:port" status="UP">
Avatar billede jakobdo Ekspert
08. august 2008 - 19:37 #18
$xml = simplexml_load_string($xml_string);

foreach($xml->server[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}

Fundet her: http://dk.php.net/manual/en/function.simplexml-element-attributes.php
Avatar billede fixbabe Nybegynder
08. august 2008 - 23:23 #19
Tak, gider du smide et svar på http://www.eksperten.dk/spm/840963
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester