Помогите спарсить XML

Тема в разделе "PHP", создана пользователем Otto, 23 мар 2011.

Модераторы: latteo
  1. Otto

    Otto

    Регистр.:
    12 май 2008
    Сообщения:
    484
    Симпатии:
    158
    Есть XML которые надо спарсить на php страницу. Подскажите как

    Код:
    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <price>
        <name>Name 1</name>
        <company>Adidas</company>
        <city>USA</city>
        <amount>6.58</amount>
      </price>
      <price>
        <name>Name 2</name>
        <company>Nike</company>
        <city>Spane</city>
        <amount>114.84</amount>
      </price>
      <price>
        <name>Name 3</name>
        <company>Puma</company>
        <city>Italy</city>
        <amount>4.50</amount>
      </price>
    </DocumentElement>
    Нашёл в сети примерно аналогичный пример, только тут по другому парсится.

    XML файл:
    Код:
    <?
    $xml = simplexml_load_file("price.xml");
    ?>
    <table border="1">
    <?
    foreach ($xml->xpath('/products/producs') as $producs) {
    ?>
        <tr>
            <td><?=$producs["id"]?></td>
            <td><?=$producs["name"]?></td>
            <td><?=$producs["val1"]?></td>
            <td><?=$producs["val2"]?></td>
        </tr>
    <?
    }
    ?>
    </table>
    PHP файл:
    Код:
    <?
    $xml = simplexml_load_file("price.xml");
    ?>
    <table border="1">
    <?
    foreach ($xml->xpath('/products/producs') as $producs) {
    ?>
        <tr>
            <td><?=$producs["id"]?></td>
            <td><?=$producs["name"]?></td>
            <td><?=$producs["val1"]?></td>
            <td><?=$producs["val2"]?></td>
        </tr>
    <?
    }
    ?>
    </table>
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    PHP:
    <?php $xml simplexml_load_file("price.xml"); ?>
    <table border="1">
    <?php foreach ($xml->xpath('/DocumentElement/price') as $producs) { ?>
        <tr>
            <td><?php echo $producs->name?></td>
            <td><?php echo $producs->company?></td>
            <td><?php echo $producs->city?></td>
            <td><?php echo $producs->amount ?></td>
        </tr>
    <?php ?>
    </table>
     
    Otto нравится это.
  3. Otto

    Otto

    Регистр.:
    12 май 2008
    Сообщения:
    484
    Симпатии:
    158
    есть не большие дополнения как мне через поля <input> фильтровать вывод запись, елис бы было бы чистый запрос в ббазу, от туда я бы сделал бы, а тут малость не поиму.
     
  4. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    чет я не доганяю ... причем тут <input> ( html тег это или элемент с xml ? ) к фильтрованию вывода ...

    или <input> - это элемент в xml документе, исходя из значения которого нужно принять решение "выводить ли запись или нет" ?

    если да, то просто будет что-то типа

    PHP:
    <?php foreach ($xml->xpath('/DocumentElement/price') as $producs) {

    if( 
    $producs->input  100  ){ // какое-то условие по которому делаем вывод 
     
    ?> 
    <!--- ну а тут сам вывод --->
        <tr> 
            <td><?php echo $producs->name?></td> 
            <td><?php echo $producs->company?></td> 
            <td><?php echo $producs->city?></td> 
            <td><?php echo $producs->amount ?></td> 
        </tr> 
     <?php ?>
    <?php 
    ?>

     
  5. Otto

    Otto

    Регистр.:
    12 май 2008
    Сообщения:
    484
    Симпатии:
    158
    Я делаю поиск по полям для фильтрации, т.е. виде ввода и вывода
     
  6. Yfo

    Yfo Создатель

    Регистр.:
    30 окт 2007
    Сообщения:
    43
    Симпатии:
    4
    Посмотри, как берутся элементы из xml - через xpath('/DocumentElement/price'), далее можно обращатся через свойства $producs->city, так и фильтруй все так, как тебе нужно.
    В крайнем случае, если не получается или слишком большой xml и с ним неудобно работать, загони все данные в бд, а оттуда уже с ними работай.