За последние 24 часа нас посетили 22746 программистов и 1264 робота. Сейчас ищут 750 программистов ...

Помогите получить доступ к объекту xml

Тема в разделе "Сделайте за меня", создана пользователем Frostman, 17 фев 2017.

  1. Frostman

    Frostman Новичок

    С нами с:
    17 фев 2017
    Сообщения:
    2
    Симпатии:
    0
    код
    <?php
    $url = 'http://iss.moex.com/iss/engines/stock/markets/shares/securities.xml';
    $txt = $xml->data[1]->rows->row[1];
    echo $txt;

    Что дописать далее, чтобы получить искомое значение "AFLT"? К сожалению, не могу разобраться как обратиться к данному атрибуту.
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    PHP:
    1. <?php
    2. $url = 'http://iss.moex.com/iss/engines/stock/markets/shares/securities.xml';
    3. $xml = simplexml_load_file($url);
    4. $txt = $xml->data->rows->row[0]->attributes();
    5. echo $txt['SECID'];
    Код (Text):
    1. AFLT
     
    #2 alexblack, 17 фев 2017
    Последнее редактирование: 17 фев 2017
    denis01 и Frostman нравится это.
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Лично мне, иногда проще использовать Xpath.
    PHP:
    1. <?php
    2. $xml = simplexml_load_file('http://iss.moex.com/iss/engines/stock/markets/shares/securities.xml');
    3. // Первое значение атрибута
    4. echo $xml->xpath('//rows/row/@SECID')[0]; // AFLT
    5. // В цикле все значения
    6. $attrs = $xml->xpath('//rows/row/@SECID');
    7. foreach($attrs as $attr) {
    8.     echo $attr . PHP_EOL;
    9. }
     
    denis01 и Frostman нравится это.
  4. Frostman

    Frostman Новичок

    С нами с:
    17 фев 2017
    Сообщения:
    2
    Симпатии:
    0
    alexblack, Deonis, благодарю за оба варианта.

    А как можно прописать, чтобы найти номер строчки по двум атрибутам?
    PHP:
    1. $t = "AFLT"; //искать в атрибуте 'SECID'
    2. $m = "TQBR"; //искать в атрибуте 'BOARDID'
    Соответственно, далее обратиться по номеру нужной строки:
    PHP:
    1. $txt = $xml->data[1]->rows->row['номер нужной строки']->attributes();
    2. echo $txt['SECID'];
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. <?php
    2. $rows =  $xml->xpath('//rows/row[@SECID="AFLT"][@BOARDID="TQBR"]');
    3. foreach($rows AS $row){
    4.     print_r( $row->attributes() );  
    5. }
     
    Frostman нравится это.