[PHP/xmlparser] ezxml.php wil niet goed werken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

(apache 1.3, php 4.3.9, op windows)

Ik heb een stuk xml code die ik met de ezxml.php class wil parsen.

De problemen begonnen al dat php de :: niet herkenden.
Toen heb ik php 4.1.1 naar 4.3.9 geupgrade.
(Dat probleem was nu opgelost.)

Ik heb bijna all modules aan gezet en ze werken allemaal.

Toen kwam het volgende probleem. Het lijkt of php het commando children niet herkent:

$tree =& eZXML::domTree( $xmlcode, array( "TrimWhiteSpace" => true ) );

foreach ( $tree->children as $document )
{
// de rest van de code
}

Ik krijg de volgende foutmelding: "Invalid argument supplied for foreach() in"

Het probleem zit in php zelf (een bepaalde module) en niet in de code denk ik maar ik heb geen idee waarin.

Waarschijnlijk staat iets uit bij mij wat aan moet.

Deze modules heb ik extra aangezet
php_domxml.dll
php_xmlrpc.dll
php_xslt.dll

Bij voorbaat dank.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik zou eerste maar eens nagaan of hetgeen je terugkrijgt van die eZXML class wel een echte tree is en of alles wel goed geparst wordt, etcetera. Gebruik daarvoor iig de eZXML documentatie (als die er is :P) en bijv. var_dump()

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
en de modules mogen ook uit. ezxml is er voor mensen die die modules (met name php_domxml in dit geval) niet tot hun beschikking hebben.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dit is een gedeelte van de data die in $tree staat :
[countries] => Array
(
[0] => ezdomnode Object
(
[Name] => countries
[Type] => 1
[Content] =>
[Children] => Array
(
[0] => ezdomnode Object
(
[Name] => country
[Type] => 1
[Content] =>
[Children] => Array
(
[0] => ezdomnode Object
(
[Name] => country-code
[Type] => 1
[Content] =>
[Children] => Array
(
[0] => ezdomnode Object
(
[Name] => #text
[Type] => 3
[Content] => AR
[Children] => Array
(
)

[Attributes] => Array
(
)

[NamespaceURI] =>
[LocalName] =>
[Prefix] =>
)

)

[Attributes] => Array
(
)

[NamespaceURI] =>
[LocalName] => country-code
[Prefix] =>
)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar hoe kan het dat het commando ->children niet wordt herkent?

De xml en de data die terug komt is allemaal goed.

[ Voor 32% gewijzigd door Verwijderd op 22-10-2004 15:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt het ook handmatiger doen met

function startElement($parser, $name, $attribs)
function endElement($parser, $name)
function characterData($parser, $data)

Zo heb ik het ooit wel gedaan.

voor meer info zie:

http://nl.php.net/xml

[ Voor 8% gewijzigd door Verwijderd op 22-10-2004 15:52 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Puntnl:
Maar hoe kan het dat het commando ->children niet wordt herkent?
Vermoedelijk omdat $tree geen object maar een array is, en je daarom de children als volgt moet aanspreken:
code:
1
foreach ( $tree [ 'children' ] as $child ) {

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat was hem, tx drm.
Pagina: 1