Oprettet tor. d. 26. april 2012 kl. 14:36:09

stigma
stigma (11.815 point. Point ude: 0)
codr.dk

simplexml_load_file()

Hej.

Jeg er i færd med at udtrække nogle data fra et XML dokument som ser således ud:

<?xml version="1.0" encoding="utf8"?>
<component appfolder="app">
    <author>
        <name>Jeppe Christiansen</name>
        <company>SiteTech Webudvikling ApS</company>
        <contact>
            <email>jeppe[at]sitetech.dk</email>
            <phone>000</phone>
            <address>xxx</address>
            <postal>xxx</postal>
            <city>0000</city>
        </contact>
    </author>
</component>

Jeg gør følgende, for at gemme xml data i et array.

$data = simplexml_load_file('setup.xml);

$author = array(
    "author_name"         => $data->author->name,
    "author_company"    => $data->author->company,
    "author_email"         => $data->author->contact->email,
    "author_phone"     => $data->author->contact->phone,
    "author_address"     => $data->author->contact->address,
    "author_city"         => $data->author->contact->city,
    "author_postal"     => $data->author->contact->postal);

Med overstående metode havde jeg regnet med at f.eks værdien for $author['author_name'] ville være en streng (I dette tilfælde 'Jeppe Christiansen') - Men tværtimod er det et SimpleXMLElement Object, her er et udklip fra print_r($author):

Array
(
    [author_name] => SimpleXMLElement Object
        (
            [0] => Jeppe Christiansen
        )

    [author_company] => SimpleXMLElement Object
        (
            [0] => SiteTech Webudvikling ApS
        )

Jeg ved ikke om jeg arbejder forkert med denne simplexml_load_file(); eller om der er andre alternativer til denne. Har dog fundet en løsning til dette, som er at skrive (string) foran objektet, se herunder:

$author = array(
    "author_name"         => (string)$data->author->name,
    "author_company"    => (string)$data->author->company,
    "author_email"         => (string)$data->author->contact->email,
    "author_phone"     => (string)$data->author->contact->phone,
    "author_address"     => (string)$data->author->contact->address,
    "author_city"         => (string)$data->author->contact->city,
    "author_postal"     => (string)$data->author->contact->postal);

Med overstående vil et udklip fra print_r($author) se ud således:

Array
(
    [author_name] => Jeppe Christiansen
    [author_company] => SiteTech Webudvikling ApS

Dog syntes jeg det virker som en lidt 'snyde' måde at gøre det på, ved selvfølgelig ikke om dette er det rigtige at gøre - Men vil egentlig bare gerne forhøre mig her, om der er andre måder at få mig streng sat rigtig ind i dette array, uden at det bliver til et multidimentionelt array.

På forhånd mange tak,
Jeppe Christiansen.

Skrevet tor. d. 26. april 2012 kl. 22:15:19| #1

inteeeL
inteeeL (5.826 point)
Det er ikke en "snyde" måde, men faktisk sådan, det skal gøres. SimpleXML Object skal "gøres" til en string. Det kan også gøres sådan her:
$data->author->name__toString()

Skrevet tor. d. 26. april 2012 kl. 22:32:07| #2

stigma
stigma (11.815 point)
codr.dk
Aah okey - Jeg syntes bare det virkede som sådan en ukorrant måde at gøre det på. Syntes også bare det var mærkeligt at den lavede det om til et array. Men ski'ået!

Smid et svar! :)

Skrevet fre. d. 27. april 2012 kl. 08:01:36| #3

inteeeL
inteeeL (5.826 point)
Du er ikke den første, der er stødt på det "problem".
- Svar. :-)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

DB-baseret dropdown viser selected post to gange...

Oprettet den 21. maj 2013 kl. 15.52
allandk giver 30 point for svar | Giv et svar »

Hente alle poster og gemme i variabel til senere echo

Oprettet den 20. maj 2013 kl. 21.49
allandk giver 30 point for svar | Giv et svar »

if med flere SELECT i Mysql

Oprettet den 19. maj 2013 kl. 15.08
artico giver 100 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

De 21 værste it-vaner - og hvordan du bryder dem

Du har helt sikkert en af disse dårlige it-vaner. Se her hvad du kan gøre.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger