2010-03-24 4 views
1

Мое знание XML и PHP несколько основных, но был в состоянии разобрать простой XML-документ (один уровень):продвинутый xml? многоуровневый .. PHP синтаксический

<numbers> 
    <number>1</number> 
    <number>2</number> 
</numbers> 

Я пытаюсь разобрать документ XML из веб-сайт, содержащий последние рыночные цены на золотые слитки. Я думаю, что мне понадобится платный профессионал, но я хочу сам сделать это.

XML-файл выглядит следующим образом:

<envelope> 
    <message type="MARKET_DEPTH_A" version="0.1"> 
    <market> 
     <pitches> 
      <pitch 
      securityClassNarrative="GOLD" 
      securityId="AUXLN" 
      considerationCurrency="GBP" 
      > 
       <buyPrices> 
        <price 
        actionIndicator="B" 
        quantity="0.153" 
        limit="23477" 
       /> 
      </buyPrices> 

      <sellPrices> 
        <price 
        actionIndicator="S" 
        quantity="0.058" 
        limit="23589" 
       /> 
      </sellPrices> 

     </pitch> 
     </pitches> 
    </market> 
    </message> 
</envelope> 

и просто O не имеют ни малейшего представления о том, как получить доступ к значениям в пределах «заголовков». (какой бы ни был термин)

Может показаться, что я прошу кого-то сделать это для меня, чего я не хочу, но я не знаю, что искать ~ это не похоже регулярная структура xml для меня.

+0

Это выглядит довольно базовый XML; «заголовки» называются атрибутами. Я просто не знаю, как обращаться с ними в PHP. –

ответ

3

Используя SimpleXML, вы можете получить атрибуты с использованием массива-нотации.

Например, с данными XML, вы могли бы иметь какую-то часть кода, который выглядит следующим образом:

$string = <<<XML 
<envelope> 
    <message type="MARKET_DEPTH_A" version="0.1"> 
    ... 
    ... 
    </message> 
</envelope> 
XML; 


$xml = simplexml_load_string($string); 

echo (string)$xml->message['type'] . '<br />'; 
echo (string)$xml->message->market->pitches->pitch['securityId'] . '<br />'; 
echo (string)$xml->message->market->pitches->pitch->sellPrices->price['limit'] . '<br />'; 

Примечание: Я использовал simplexml_load_string как я имел данные XML в строковую переменную; но вы также можете использовать simplexml_load_file, в зависимости от ситуации/


И вы получите следующий вывод:

MARKET_DEPTH_A 
AUXLN 
23589 
+0

+1 для примера. – pinaki

+0

Похоже, отличное место для начала. большое спасибо – dave1019

+0

Добро пожаловать :-) ;; Повеселись ! –

0

Это действительно просто XML :) .. Посмотрите на php manual для SimpleXML. Пусть знать, если вам нужна помощь, кроме того

Смежные вопросы