webForumDet fria alternativet

XML parsing

2 svar · 301 visningar · startad av FredrikMH

FredrikMHMedlem sedan maj 200430 inlägg
#1

Har letat ett tag nu men hittar inte eller så förstår jag inte... har inte kommit fram till vilket ännu :)

Men jag vill få ut värdena från en xml fil som ser ut i stil med detta:

<theme version="3.0">
<Background Color="0x003264" />
<Background_image Source="list background.gif" />

osv....

Jag vill loopa igenom dessa och ta ut de olika värderna och namnen. Så av <Background Color="0x003264" /> vill jag få ut 3 variabler som innehåller "Background", "Color" och "0x003264".

Det enda jag lyckats med är att få ut "Background" och har använt mig utav ett kod exempel:

<? 

$file = "xml.xml"; 

function contents($parser, $data){ 
    echo $data; 
} 

function startTag($parser, $data){ 
    echo "<b>$data</b><br />"; 
} 

function endTag($parser, $data){ 
    echo ""; 
} 

$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startTag", "endTag"); 

xml_set_character_data_handler($xml_parser, "contents"); 

$fp = fopen($file, "r"); 

$data = fread($fp, 80000); 

if(!(xml_parse($xml_parser, $data, feof($fp)))){ 
    die("Error on line " . xml_get_current_line_number($xml_parser)); 
} 

xml_parser_free($xml_parser); 

fclose($fp); 

?>

Så hur ska jag lyckas få ut de andra värderna? Har kollat igenom php-funktioner på php.net men inte hittat det jag söker.

jarvkloMedlem sedan juli 20013 378 inlägg
#2

Hmm...

Hanteringsfunktionerna startTag och endTag kan deklareras till att ta fler argument...
Klämmer du dit ett tredje som du t.ex. döper till attribs så hamnar en vektor med attributen och deras värden där - vilket med största sannolikhet löser ditt problem ;)

Här är en tråd där utläsning av attribut används ganska friskt i den slutliga lösningen:
http://www.webforum.nu/showthread.php?s=&forumid=21&threadid=50137
XML:en som diskuteras (länk i första inlägget i tråden) ligger tydligen fortfarande uppe, så du borde kunna klura ut hur du får tag på attributen och deras värden ur koden och XML-strukturen ;)

FredrikMHMedlem sedan maj 200430 inlägg
#3

Jepp jag hittade det precis när jag gick igenom funktionerna på php.net igen. Så det har löst sig nu. Tack så mycket ändå.

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)