[PHP] XML 2 ARRAY

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
Hallo,

Ik ben bezig met een leuk project, echter word er gebruik gemaakt van XML deze wil ik laten converteren naar een Array.

De XML ziet er zo uit (voorbeeld):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="ISO-8859-1"?>
<gebruikers updated="19-4-2010">
    <user>
        <name>Dragon707</name>
        <age>17</age>
        <img>src/img/dragon707.gif</name>
    </user>
    <user>
        <name>Kevin</name>
        <age>23</age>
        <img>src/img/kevin.gif</name>
    </user>
    <user>
        <name>test</name>
        <age>45398</age>
        <img>src/img/test.gif</name>
    </user>
</gebruikers>


op PHP.net heb ik een paar functies gevonden die dat kunnen omzetten. alleen zet die die niet alles om, alleen de laatste <user>. Heeft iemand een idee hoe ik zo'n functie zou kunnen bouwen? (niet alles voorzeggen, ik wil ook nog wat leren 8) )

Acties:
  • 0 Henk 'm!

  • JackPoint
  • Registratie: Juli 2007
  • Laatst online: 06-09 22:59
Op http://www.weberdev.com/get_example-4416.html kun je een voorbeeld vinden om een xml naar een array om te zetten.
Op phpclasses.org heb ik deze gevonden http://www.phpclasses.org...-keep-ns-attributes-.html, onder de categorie xml kun je ook vast wel wat interessants vinden

Acties:
  • 0 Henk 'm!

  • dik_voormekaar
  • Registratie: April 2003
  • Laatst online: 15-09 21:32
Wat is er mis met simplexml_load_file() ?

By the way: Je <img> tags in je xml zijn afgesloten met </name>. Dat klopt niet.

Acties:
  • 0 Henk 'm!

  • smeetsmeister
  • Registratie: Maart 2010
  • Laatst online: 07-07 15:19
ik zie trouwens een fout in je xml.
je hebt:
<img>src/img/kevin.gif</name>
je begint dus met een img tag terwijl je het afsluit met een name tag ;)

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
okee, het is intussen gelukt. Echter heb ik nu een ander probleempje:

ik heb een tag die zo heet: <thumb.jpg>http://******.**/DATA/img_opelastra_98346.jpg</thumb.jpg>
Als ik het wil uitlezen en het volgende doe:

$xml=simplexml_load_file($file);
$xml=$xml->voertuig->thumb.jpg;

krijg ik een fout omdat ik een punt heb gebruikt in de PHP code.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het is daarom ook niet zo handig om een . in je naam te gebruiken. Maar kan je het niet gewoon oplossen door via de array syntax te benaderen?

$xml->voertuig['thumb.jpg'];

Overigens zou het handig zijn als je [code=taal] tags zou gebruiken ( In je startpost dus [code=xml] ), dan is het beter leesbaar aangezien de identing dan bewaard blijft.

[ Voor 5% gewijzigd door Woy op 19-04-2010 13:23 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
Hmm de XML file is van een externe site. Die ze vrijgeven aan mij. dus die XML file kan ik zelf niet aanpassen.
dus $xml->voertuig['thumb.jpg']; kan ik niet werkend krijgen. Overige opites om het toch nog leesbaar te krijgen?

(ik zal mijn startpost even aanpassen met [code=xml] tag's ;))

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dragon707 schreef op maandag 19 april 2010 @ 13:24:
dus $xml->voertuig['thumb.jpg']; kan ik niet werkend krijgen.
Hoezo niet? Ik ken simplexml niet, maar je zult dus op moeten zoeken hoe je elementen op kunt vragen die characters bevatten die in PHP een andere betekenis hebben. Mijn gok is dus op de manier dat ik aangeef, maar anders zal het vast op een andere manier kunnen. Hoe dat precies werkt, zul je in de documentatie op moeten zoeken.

edit:
Het antwoord staat zoals verwacht gewoon in de documentatie: http://www.php.net/manual/en/simplexml.examples-basic.php

[ Voor 11% gewijzigd door Woy op 19-04-2010 13:31 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
In die documentatie staat dat je attributes zo kunt benaderen, maar elementen niet.

Ik weet niet waar je de xml vandaan haalt, maar kun je ze niet overtuigen om <thumb type="jpg"> te gebruiken ipv <thumb.jpg>?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Davio schreef op maandag 19 april 2010 @ 14:35:
In die documentatie staat dat je attributes zo kunt benaderen, maar elementen niet.

Ik weet niet waar je de xml vandaan haalt, maar kun je ze niet overtuigen om <thumb type="jpg"> te gebruiken ipv <thumb.jpg>?
Als je iets verder leest zie je ook
Accessing elements within an XML document that contain characters not permitted under PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1