2012-11-19 14 views
5

Oto mój kod PHP:PHP SimpleXML XPath: zawiera i pozycja

$xml = new SimpleXMLElement('data.xml', null, true); 
$q = $xml->xpath('post/misc[contains(tags,"animal")][position() <= 2]'); 

I tu jest plik XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<posts> 
    <post> 
     <id>1</id> 
     <misc> 
      <tags>animal,tiger</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>2</id> 
     <misc> 
      <tags>plant,coconut</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>3</id> 
     <misc> 
      <tags>animal,lion</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>4</id> 
     <misc> 
      <tags>animal,monkey</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
</posts> 

Jak mogę dostać 2 pierwsze elementy, gdzie jest to znaczniki zawiera " zwierzę' ?

Wynik xpath powinien być post:id=1 i post:id=3, ale widać, że zwraca wszystkie elementy, które zawierają animal.

Odpowiedz

4

Put Główną część XPath w () nawiasach, tj .:

(//post/misc[contains(tags,"animal")])[position() <= 2]