Hey,

Ik lees de volgende xml-data via simplexml in:

<?
<document>
<item>
<row>
<datum>2010-09-04</datum>
<oms>omschrijving 1</oms>
<titel>testje 1</titel>
</row>
<row>
<datum>2010-09-05</datum>
<oms>omschrijving 2</oms>
<titel>testje 2</titel>
</row>
</item>
</document>
?>

Dmv van een for-loop lees ik alle regels van de row in. Dit doe ik echter door hardcoded het veld te noemen (dus $tst[] = $xml->item[0]->row->datum;);

Kan het niet simpeler door bij de naam van het variabel in de rij row op te vragen? Dus kan ik de naam van bijvoorbeeld variabel datum bepalen en vervolgens dit veld gebruiken?
Zet je XML bericht maar even tussen code tags, dan is het duidelijker voor iedereen.

OT: Een veel gebruikte methode om dit te bereiken, is een zogenoemde Xpath. SimpleXML heeft hier ook een implementatie voor, zie de documentatie op php.net.
Google nog wel even extra naar "xpath" voordat je het gaat gebruiken, omdat Xpath veel krachtiger is als de beperkte uitleg die over het onderwerp zelf gegeven wordt op php.net. Daar staat alleen hoe je de xpath in php gebruikt, en niet wat de mogelijkheden allemaal zijn.
Oke kan je me qua code wat op weg helpen?

Heb nu dit maar dit werkt niet:

<?
function restore_data_by_type( $tmp ) {
$this->content['test']['datum'] = (string)$this->xml->item[0]->row->datum;
$this->content['test']['oms'] = (string)$this->xml->item[0]->row->oms;
$this->content['test']['titel'] = (string)$this->xml->item[0]->row->titel;

$xml = new SimpleXMLElement($this->xml->item[0]);
echo "--> ".$xml->xpath('row')."<br>";
}
?>

Wat doe ik fout?
Lekker duidelijk weer :)

Anyway, probeer eens //row
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML'
<?php
function findDatum($date){
$xml = simplexml_load_file("yourdatafile");
foreach ($xml->item as $row){
if ((string)$row->datum == $date) {
return (string)$row->titel . (string)$row->oms .(string)$row->datum;
}
}
}
?>
Dit zou moeten werken
Anno Niem op 13/09/2010 14:07:25

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML'


En wat denk je dat die fout betekent?

...
Dat er tekens (ASCII) in het script staan die niet als XML herkend worden.
Als je als test het file even het als string inlaad dan zou het gewoon moeten werken.
<?php
$xml = simplexml_load_string("<document>
<item>
<row>
<datum>2010-09-04</datum>
<oms>omschrijving 1</oms>
<titel>testje 1</titel>
</row>
<row>
<datum>2010-09-05</datum>
<oms>omschrijving 2</oms>
<titel>testje 2</titel>
</row>
</item>
</document>
");?>
Daarna de rest weer.
C S op 13/09/2010 15:07:55

Dat er tekens (ASCII) in het script staan die niet als XML herkend worden.
Als je als test het file even het als string inlaad dan zou het gewoon moeten werken.
<?php
$xml = simplexml_load_string("<document>
<item>
<row>
<datum>2010-09-04</datum>
<oms>omschrijving 1</oms>
<titel>testje 1</titel>
</row>
<row>
<datum>2010-09-05</datum>
<oms>omschrijving 2</oms>
<titel>testje 2</titel>
</row>
</item>
</document>
");?>
Daarna de rest weer.



Ik had gehoopt dat 'ie het zelf uit zou zoeken ;-)

Reageren