[PHP] SimpleXML selecteren op waarde van attribute

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Hoi ik heb een probleempje waar ik niet uit kom.

In bijvoorbeeld het volgende voorbeeld

PHP:
1
2
3
4
<name id='1' land='2'></name>
<name id='2' land='3'></name>
<name id='3' land='4'></name>
<name id='4' land='5'></name>


Zou ik graag alleen de id willen hebben waarbij land bijvoorbeeld 3 is.
Is dit mogelijk met SimpleXML ?

Met het volgende werkt het wel maar als de xml in andere volgorde staat of land 3 heeft geen waarde en ik wil terugvallen naar standaard waarde land='5' dan werkt het onderstaande niet.

PHP:
1
2
3
4
5
$xml = simplexml_load_file('480237.xml');

foreach($xml->children() as $fet) {
        $waarde  = $fet->Name[1]['land']; 
}


Ik heb het al geprobeerd met een if loop door deze gelijk te stellen aan land == 3 maar dit werkt helaas niet.
Daarna heb ik het geprobeerd met strpos omdat de '3' misschien als string gezien werd, maar ook dit was een no go ...

Ik heb het idee dat ik heel moeilijk aan het doen ben en dat het makkelijk moet kunnen.
Kan iemand me de goeie richting in helpen ?

Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 20-09 14:42
Dit doe je niet met Value, maar attributes().

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online

{signature}


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Ja daar heb ik ook aan zitten denken maar ik kan bij een xpath ook geen voorwaarden zetten toch ?
zoals

[@land=3]

Je kan alleen @land zoeken .... en dan krijg je weer alle 4 de regels ...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Reveal! schreef op woensdag 22 juli 2009 @ 23:37:
[@land=3]

Je kan alleen @land zoeken .... en dan krijg je weer alle 4 de regels ...
Ik zie dat toch echt op die pagina staan waar voutloos naar verwijst...
drewish at katherinehouse dot com 11-Jul-2005 01:16
xpath() can also be used to select elements by their attributes. For a good XPath reference check out: http://www.w3schools.com/xpath/xpath_syntax.asp

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$string = <<<XML
<sizes>
    <size label="Square" width="75" height="75" />
    <size label="Thumbnail" width="100" height="62" />
    <size label="Small" width="112" height="69" />
    <size label="Large" width="112" height="69" />
</sizes>
XML;

$xml = simplexml_load_string($string);
$result = $xml->xpath("//size[@label='Large']");

// print the first (and only) member of the array
echo $result[0]->asXml();
?>


The script would print:
code:
1
<size label="Large" width="112" height="69"/>
Heb je al eens [@land='3'] geprobeerd?

[ Voor 74% gewijzigd door RobIII op 22-07-2009 23:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Lees eens wat xpath voorbeelden, probeer het nog eens en slaag vervolgens grote tijd. :P

{signature}


Acties:
  • 0 Henk 'm!

  • Reveal!
  • Registratie: November 1999
  • Laatst online: 08:36
Voutloos schreef op woensdag 22 juli 2009 @ 23:40:
Lees eens wat xpath voorbeelden, probeer het nog eens en slaag vervolgens grote tijd. :P
Held !!!
Het is gelukt, wist wel dat ik met me neus zat te kijken ergens...

$land = $xml->xpath('//Name[@land="3"]');

en dan een foreach loop :)
Pagina: 1