[PHP/SimpleXML] Hoe een element aanspreken met key '0'?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mees
  • Registratie: December 2000
  • Laatst online: 06-08 11:13

mees

Duuuussss...

Topicstarter
Ik heb zo'n vaag vermoeden, dat dit met 1 of 2 posts al opgelost is, maar misschien ook niet...

Ik ben bezig met een PHP applicatie te maken die een webshop koppelt aan AccountView administratiesysteem, waarbij XML als communicatiemiddel gebruikt wordt. Ik krijg van Accountview een XML als response, welke ik met SimpleXML uitlees. Tenminste, als het zou lukken... Ik krijg namelijk het volgende XML gedeelte terug:
code:
1
2
3
4
5
6
7
8
9
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [NUMBER] => 1
        )

    [0] => ARTICLE.ART_DESC1
)


Nu mijn vraag... als $Object het simplexmlobject is, hoe vraag ik dan de waarde van key 0 op?
Geprobeerd:
• $object->0; --- werkt niet, resulteert in syntax error..
• Converteren naar array met Get_object_vars() --- werkt ook niet, dan verdwijnt om e.o.a. vage reden de 0-key...
• $object->{'0'}, $object->{"0"}, $object->{0} --- geven alle 3 een leeg simplexmlelementobject terug...

iemand enig idee?

[ Voor 7% gewijzigd door mees op 16-04-2007 15:02 ]

8 bitterballen = 1 byterbal


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

PHP:
1
$object[0]

zoals je weet zijn in php objecten gewoon bijzondere arrays, dus bovenstaande regeltje werkt gewoon

Acties:
  • 0 Henk 'm!

  • mees
  • Registratie: December 2000
  • Laatst online: 06-08 11:13

mees

Duuuussss...

Topicstarter
nope.. dan krijg ik een lege string terug...

8 bitterballen = 1 byterbal


Acties:
  • 0 Henk 'm!

  • remcotolsma
  • Registratie: December 2005
  • Laatst online: 08-09 11:11
Wat is de bijbehorende XML? Ik denk trouwens dat het volgende wel moet werken:

PHP:
1
2
  $name = (string) $object;
  echo $name; // ouput = ARTICLE.ART_DESC1

Acties:
  • 0 Henk 'm!

  • Blamm
  • Registratie: Februari 2001
  • Laatst online: 02-09 16:36

Blamm

Niet meer Smart

Je wilt alleen 0 of allemaal?
Wellicht dat je met $Object->children() in een foreach ze op kunt pakken dan.

leer je dit niet bij je certificering Bart2 ? :P

Acties:
  • 0 Henk 'm!

  • remcotolsma
  • Registratie: December 2005
  • Laatst online: 08-09 11:11
Er is waarschijnlijk niet sprake van children, zie onderstaand voorbeeldje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$xmlStr = <<<XML
<?xml version='1.0' standalone='yes'?>
<testDocument>
  <test NUMBER="1">ARTICLE.ART_DESC1</test>
</testDocument>
XML;

$xml = new SimpleXMLElement($xmlStr);

echo '<pre>';
print_r($xml->test[0]);
echo '</pre>';

echo $xml->test[0];
?>


Output

code:
1
2
3
4
5
6
7
8
9
10
11
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [NUMBER] => 1
        )

    [0] => ARTICLE.ART_DESC1
)

ARTICLE.ART_DESC1

Acties:
  • 0 Henk 'm!

  • mees
  • Registratie: December 2000
  • Laatst online: 06-08 11:13

mees

Duuuussss...

Topicstarter
Inderdaad... en remcotolsma gaf het goede antwoord.. het is natuurlijk gewoon een kwestie van het object casten naar een string :) Doh!

enneh, Razorfist.... zelfs Wouter wist zich geen raad met dit probleem :)

8 bitterballen = 1 byterbal

Pagina: 1