За последние 24 часа нас посетил 15791 программист и 1541 робот. Сейчас ищут 714 программистов ...

помогите с xml

Тема в разделе "PHP для новичков", создана пользователем inline, 25 янв 2014.

  1. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Код (Text):
    1. <debtor-requirements>
    2. <debtor gender="MALE">
    3. <min-age>20</min-age>
    4. <max-repayment-age>60</max-repayment-age>
    5. </debtor>
    6. <debtor gender="FEMALE">
    7. <min-age>20</min-age>
    8. <max-repayment-age>55</max-repayment-age>
    9. </debtor>
    как через SimpleXML
    получить "MALE: 20-60" и "FEMALE: 20-55"

    Спасибо!
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $xml=<<<XML
    2. <debtor-requirements>
    3. <debtor gender="MALE">
    4. <min-age>20</min-age>
    5. <max-repayment-age>60</max-repayment-age>
    6. </debtor>
    7. <debtor gender="FEMALE">
    8. <min-age>20</min-age>
    9. <max-repayment-age>55</max-repayment-age>
    10. </debtor>
    11. </debtor-requirements>
    12. XML;
    13. foreach($xml->debtor as $val) {
    14.     print_r($val->attributes());
    15. } 
    И т. д. и т. п.
     
  3. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    СПАСИБО!
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Если порядок следования min-age и max-repayment-age не будет меняться то можно и так

    Код (PHP):
    1. $xml=<<<XML
    2. <debtor-requirements>
    3. <debtor gender="MALE">
    4. <min-age>20</min-age>
    5. <max-repayment-age>60</max-repayment-age>
    6. </debtor>
    7. <debtor gender="FEMALE">
    8. <min-age>20</min-age>
    9. <max-repayment-age>55</max-repayment-age>
    10. </debtor>
    11. </debtor-requirements>
    12. XML;
    13.  
    14. function get_values($xml, $gender){
    15.     $xml = new SimpleXMLElement($xml);
    16.     $data = $xml->xpath("/debtor-requirements/debtor[@gender='$gender']/descendant::*/text()");
    17.     return array('min-age' => (string)$data[0], 'max-repayment-age' => (string)$data[1]);
    18. }
    19.  
    20.  
    21. print_r(get_values($xml, 'MALE'));
    22.  
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $xml=new SimpleXMLElement($xml);
    2. foreach($xml->debtor as $val) {
    3.     $array=(array)$val;
    4.     echo nl2br($val->attributes()[0].': '.$array['min-age'].' - '.$array['max-repayment-age'].'
    5.     ');
    6. } 
    7. /*
    8. MALE: 20 - 60
    9. FEMALE: 20 - 55
    10. */ 
     
  6. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    а как получить href только для которого rel="logo" ?
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. foreach($xml->link as $val) {
    2.     $val=$val->attributes();
    3.     if('logo'==$val->rel) {
    4.         echo $val->href;
    5.     }
    6. }