За последние 24 часа нас посетили 24286 программистов и 1660 роботов. Сейчас ищут 839 программистов ...

xml и simplexml_load_file

Тема в разделе "PHP для новичков", создана пользователем etalcom, 26 окт 2012.

  1. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Вот сейчас вот столкнулся с такой вот проблемой, думаю может Вы поможете:

    Код (Text):
    1. <ArrayOfDetailItem xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    2. <DetailItem>
    3. <DetailInfo xsi:type="fDetailsSOAP_price">
    4. <DetailNum>5288</DetailNum>
    5. <MakeLogo>GA</MakeLogo>
    6. <PriceLogo>MINS</PriceLogo>
    7. <DestinationLogo>AFL</DestinationLogo>
    8. <CalcDeliveryPercent>100.0</CalcDeliveryPercent>
    9. <ADDays>6</ADDays>
    10. <PriceGroup>Original</PriceGroup>
    11. <MakeSynonymGroupId>-473</MakeSynonymGroupId>
    12. <DDPercent>100.0</DDPercent>
    13. <MakeName>Gates</MakeName>
    14. <DetailNameRus>Ремень ГРМ</DetailNameRus>
    15. <LotQuantity>1</LotQuantity>
    16. <Quantity>4</Quantity>
    17. <QuantityText>=4</QuantityText>
    18. <DeliverTimeGuaranteed>5</DeliverTimeGuaranteed>
    19. <PriceCountry>Европа</PriceCountry>
    20. </DetailInfo>
    21. <Prices>
    22. <ResultPrice>304.8000</ResultPrice>
    23. </Prices>
    24. </DetailItem>
    25. </ArrayOfDetailItem>
    Вывожу все это дело так
    Код (Text):
    1. $emex = "$xml";
    2.    $xemex =  simplexml_load_file($emex);
    3.    $namespaces = $xemex->getDocNamespaces();
    4.    $xemex->registerXPathNamespace('__empty_ns', $namespaces['']);
    5.    $text = '<table width="100%" cellpadding="2" cellspacing="2" border="0" >'.
    6.             '<tr><td class="stitle">Артикул</td>'.
    7.             '<td class="stitle">Фирма</td>'.
    8.             '<td class="stitle">Наимнование</td>'.
    9.                 '<td class="stitle">Кол-во</td>'.
    10.                 '<td class="stitle">Направление</td>'.
    11.             '</tr>';
    12.            
    13.       foreach ($xemex->xpath('//__empty_ns:DetailInfo') as $item)
    14.          {
    15.             if (strtoupper($search) == strtoupper($item->DetailNum))
    16.             {
    17.                $text .= "<tr class='tru2'><td class='tru2' width='10%'>".$item->DetailNum."</td>";
    18.                $text .= "<td class='tru2' width='10%'>".$item->MakeName."</td>";
    19.                $text .= "<td class='tru2' width='10%'>".$item->DetailNameRus."</td>";
    20.                $text .= "<td class='tru2' width='10%'>".$item->Quantity."</td>";
    21.                $text .= "<td class='tru2' width='60%'>".$item->DestinationLogo."</td>";
    22.                $text .= "</tr>";
    23.             }
    24.          }
    25.  
    26.          $text .= "</table>";
    27. echo $text;
    Но мне нужно еще в этой таблице вывести цену деталей она находиться в

    Код (Text):
    1. <Prices>
    2. <ResultPrice>286.6700</ResultPrice>
    3. </Prices>
    Вот голову ломал ломал как сделать чего ни чего не выходит у меня.Видимо уже загнался данной проблемой. И свежих мыслей нет(НЕ подскажите?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
  3. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Спасибо конечно за ответ, просто как в мне в таблицу то вывести это дело?
    Вот у меня в описании проблемы есть цикл по которому я вывожу данные в табл и как мне в этом же цикле выхватить цену?
    Тут то вы Выводите только одну строчку данного xml а мне то надо все цены просто это не весь xml это тока часть

    Добавлено спустя 33 минуты 1 секунду:
    Вот конечно пробую всяко, уже просто не знаю чего делать помощи прошу!
    вот код который сейчас накидал
    Код (Text):
    1. $emex = "Тут путь к xml";
    2.     $xemex =  simplexml_load_file($emex);
    3.     $namespaces = $xemex->getDocNamespaces();
    4.     $xemex->registerXPathNamespace('__empty_ns', $namespaces['']);
    5.     $text = '<table width="100%" cellpadding="2" cellspacing="2" border="0" >'.
    6.             '<tr><td class="stitle">Артикул</td>'.
    7.                 '<td class="stitle">Фирма</td>'.
    8.                 '<td class="stitle">Наимнование</td>'.
    9.                 '<td class="stitle">Кол-во</td>'.
    10.                 '<td class="stitle">Направление</td>'.
    11.                 '<td class="stitle">Цена</td>'.
    12.                 '</tr>';   
    13.             foreach ($xemex->xpath('//__empty_ns:ArrayOfDetailItem') as $item)
    14.             {
    15.             $pemex = number_format(floatval($item->DetailItem->Prices->ResultPrice), 2, '.', '');
    16.            
    17.                     $text .= "<tr class='tru2'><td class='tru2' width='10%'>".$item->DetailItem->DetailInfo->DetailNum."</td>";
    18.                     $text .= "<td class='tru2' width='10%'>".$item->DetailItem->DetailInfo->MakeName."</td>";
    19.                     $text .= "<td class='tru2' width='10%'>".$item->DetailItem->DetailInfo->DetailNameRus."</td>";
    20.                     $text .= "<td class='tru2' width='10%'>".$item->DetailItem->DetailInfo->Quantity."</td>";
    21.                     $text .= "<td class='tru2' width='50%'>".$item->DetailItem->DetailInfo->DestinationLogo."</td>";
    22.                     $text .= "<td class='tru2' width='10%'>".$pemex."</td>";
    23.                     $text .= "</tr>";
    24.                
    25.             }
    26.  
    27.             $text .= "</table>";
    28. echo $text;
    вот сам xml
    Код (Text):
    1. <ArrayOfDetailItem xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    2. <DetailItem>
    3. <DetailInfo xsi:type="fDetailsSOAP_price">
    4. <DetailNum>5288</DetailNum>
    5. <MakeLogo>GA</MakeLogo>
    6. <PriceLogo>MINS</PriceLogo>
    7. <DestinationLogo>AFL</DestinationLogo>
    8. <CalcDeliveryPercent>100.0</CalcDeliveryPercent>
    9. <ADDays>5</ADDays>
    10. <PriceGroup>Original</PriceGroup>
    11. <MakeSynonymGroupId>-473</MakeSynonymGroupId>
    12. <DDPercent>100.0</DDPercent>
    13. <MakeName>Gates</MakeName>
    14. <DetailNameRus>Ремень ГРМ</DetailNameRus>
    15. <LotQuantity>1</LotQuantity>
    16. <Quantity>4</Quantity>
    17. <QuantityText>=4</QuantityText>
    18. <DeliverTimeGuaranteed>5</DeliverTimeGuaranteed>
    19. <PriceCountry>Европа</PriceCountry>
    20. </DetailInfo>
    21. <Prices>
    22. <ResultPrice>304.8000</ResultPrice>
    23. </Prices>
    24. </DetailItem>
    25. <DetailItem>
    26. <DetailInfo xsi:type="fDetailsSOAP_price">
    27. <DetailNum>5288</DetailNum>
    28. <MakeLogo>GA</MakeLogo>
    29. <PriceLogo>EKSM</PriceLogo>
    30. <DestinationLogo>AFL</DestinationLogo>
    31. <CalcDeliveryPercent>100.0</CalcDeliveryPercent>
    32. <ADDays>5</ADDays>
    33. <PriceGroup>Original</PriceGroup>
    34. <MakeSynonymGroupId>-473</MakeSynonymGroupId>
    35. <DDPercent>100.0</DDPercent>
    36. <MakeName>Gates</MakeName>
    37. <DetailNameRus>Ремень ГРМ</DetailNameRus>
    38. <LotQuantity>1</LotQuantity>
    39. <Quantity>4</Quantity>
    40. <QuantityText>=4</QuantityText>
    41. <DeliverTimeGuaranteed>7</DeliverTimeGuaranteed>
    42. <PriceCountry>Россия</PriceCountry>
    43. </DetailInfo>
    44. <Prices>
    45. <ResultPrice>278.4500</ResultPrice>
    46. </Prices>
    47. </DetailItem>
    48. <DetailItem>
    49. <DetailInfo xsi:type="fDetailsSOAP_price">
    50. <DetailNum>5288</DetailNum>
    51. <MakeLogo>GA</MakeLogo>
    52. <PriceLogo>NGPS</PriceLogo>
    53. <DestinationLogo>AFL</DestinationLogo>
    54. <CalcDeliveryPercent>100.0</CalcDeliveryPercent>
    55. <ADDays>2</ADDays>
    56. <PriceGroup>Original</PriceGroup>
    57. <MakeSynonymGroupId>-473</MakeSynonymGroupId>
    58. <DDPercent>100.0</DDPercent>
    59. <MakeName>Gates</MakeName>
    60. <DetailNameRus>Ремень ГРМ</DetailNameRus>
    61. <LotQuantity>1</LotQuantity>
    62. <Quantity>3</Quantity>
    63. <QuantityText>=3</QuantityText>
    64. <DeliverTimeGuaranteed>5</DeliverTimeGuaranteed>
    65. <PriceCountry>Москва</PriceCountry>
    66. </DetailInfo>
    67. <Prices>
    68. <ResultPrice>233.9400</ResultPrice>
    69. </Prices>
    70. </DetailItem>
    71. </ArrayOfDetailItem>
    а выводит тока первую строчку

    Добавлено спустя 12 минут 11 секунд:
    Все разобрался! Огромное спасибо за наводку