пропустить определенные объекты в XML-канал, используя php - PullRequest
2 голосов
/ 06 февраля 2010

Я использую php xpath для получения значений из приведенного ниже фида xml и функции php.

<FOUND>
    <IMAGES>
    <IMAGE>
      <SMALL>images/small.jpg</SMALL> 
      <MED>images/med.jpg</MED> 
      <LARGE>images/large.jpg</LARGE> 
      <EXTRAL>images/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images1/small.jpg</SMALL> 
      <MED>images1/med.jpg </MED> 
      <LARGE>images1/large.jpg</LARGE> 
      <EXTRAL>images1/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images2/small.jpg</SMALL> 
      <MED>images2/med.jpg </MED> 
      <LARGE>images2/large.jpg</LARGE> 
      <EXTRAL>images2/extra.jpg</EXTRAL> 
    </IMAGES>
</FOUND>

function img ($id){

    $xml=simplexml_load_file("feed1.xml");
    //$xml=simplexml_load_string($string);
    if (!$xml) {
    trigger_error("There was an error",E_USER_ERROR);
    }

    $images=$xml->xpath('//IMAGE');
    return $images;

    }

выше - это только частичный код, потому что подача довольно велика. Я хотел бы знать, есть ли способ получить только первый и третий блок объектов изображения, пропустив второй блок и отобразив оставшиеся блоки изображения? 1004 *

У меня есть отдельная огромная лента XML, которая очень похожа на вышеупомянутую ленту, примерно 80 блоков объектов изображения. Поэтому я хотел бы отображать сообщение после каждых 10 блоков. как я это делаю?

любая помощь будет высоко ценится

Ответы [ 2 ]

3 голосов
/ 06 февраля 2010

Чтобы получить первый и третий блок, вы можете сделать:

//IMAGE[position() == 1 || position() == 3]

Чтобы получить, например, каждый 10-й элемент, вы можете сделать:

//IMAGE[position() mod 10 == 0]

См .: Справочник по функциям XPath.

Я не совсем уверен, что именно вы имеете в виду, когда отображает сообщение после каждых 10 блоков , но вы можете сделать это:

$images = $xml->xpath('//IMAGE');

foreach($images as $key => $image) {
    // do whatever you want to do with the image 
    if($key % 10 == 9) {
        echo 'Some message';
    }  
}
0 голосов
/ 06 февраля 2010

Для получения дополнительной информации о синтаксисе XPath, вы можете посетить http://www.w3schools.com/xpath/xpath_syntax.asp.

И ... Поскольку xpath () возвращает массив, возможно, вы можете выполнить более сложную операцию в цикле foreach ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...