продвинутый XML? многоуровневый .. разбор php - PullRequest
1 голос
/ 24 марта 2010

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

<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.

Ответы [ 3 ]

3 голосов
/ 24 марта 2010

Используя 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 голосов
/ 24 марта 2010

Dave

Если вы когда-нибудь попадете на более крупные и сложные документы XML, возможно, стоит взглянуть на DomDocument в PHP5

http://php.net/manual/en/class.domdocument.php

0 голосов
/ 24 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...