高级xml?多级.. php解析

时间:2010-03-24 11:48:26

标签: php xml

我对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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这非常简单XML :) ..查看SimpleXML的php manual。如果您需要除此之外的任何帮助,请告诉我们

答案 2 :(得分:0)

戴夫

如果您开始使用更大更复杂的XML文档,那么可能值得一看PHP5的DomDocument

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