XML parsen

  • Onderwerp starter Onderwerp starter bn2vs
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Ik haal iets zoals onderstaande XML binnen met php:

Code:
<?xml version="1.0"?>
<api>
  <query>
    <categorymembers>
      <cm pageid="23734681" ns="14" title="Category:Formula racing drivers by series" />
      <cm pageid="23744184" ns="14" title="Category:Sports car racing drivers by series" />
      <cm pageid="23744212" ns="14" title="Category:Stock car racing drivers by series" />
      <cm pageid="23743957" ns="14" title="Category:Touring car racing drivers by series" />
      <cm pageid="23744253" ns="14" title="Category:Racecar drivers by American series" />
      <cm pageid="23744343" ns="14" title="Category:Racecar drivers by Argentine series" />
      <cm pageid="23744367" ns="14" title="Category:Racecar drivers by British series" />
      <cm pageid="23744643" ns="14" title="Category:Racecar drivers by European series" />
      <cm pageid="23744568" ns="14" title="Category:Racecar drivers by German series" />
      <cm pageid="23744292" ns="14" title="Category:Racecar drivers by Japanese series" />
    </categorymembers>
  </query>
</api>

Nu wil ik over die 'cm' records in een array krygen zodat ik er door kan loopen en stuff mee doen. Spijtig genoeg heb ik echter geen ervaring met XML parsing, en weet niet goed hoe ik hier aan moet beginnen.

Hoe krijg ik die stuff in een array?

Cheers!
Jeroen De Dauw
 
Thanks! :D

Ik heb ff zitten zoeken op hoe ik nu precies aan de waarde van een attribuut geraak. Is dit een goeie manier, of kan het beter?

Code:
$titel = (string)$line['title'];

Cheers
Jeroen De Dauw
 
Ok, werkt perfect :)

Ter reference, dit is waar ik het gebruikt:

PHP:
		$apiRes = GetCurlResponse("http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmtitle=$category&format=xml&cmlimit=500");
		
		if ($apiRes) {
			$xml = new SimpleXMLElement($apiRes);
			foreach($xml->query->categorymembers->cm as $line) {
				if ((string)$line['ns'] == '14') { // Is a category
					$categories[] = str_replace(' ', '_', (string)$line['title']);
				}
				else { // Is a page
					addPageToDb((string)$line['title']);
				}
			}
		}
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan