简体   繁体   English

如何使用PHP从外部XML文件中提取所有“ TickerSymbol”元素?

[英]How do I extract all “TickerSymbol” elements from an external XML file, using PHP?

I would like to write a PHP script to extract all elements (and only ticker symbols) from the following external page: https://www.predictit.org/api/marketdata/all/ 我想编写一个PHP脚本来提取以下外部页面中的所有元素 (仅股票代码): https : //www.predictit.org/api/marketdata/all/

So at the time of this writing, the output would be 因此,在撰写本文时,输出为

VAGOV17 VAGOV17

DEM.VAGOV17 DEM.VAGOV17

GOP.VAGOV17 GOP.VAGOV17

NJGOV17 NJGOV17

... ...

I've tried variations of loadXML() and DOMDocument::getElementsByTagName() but kept getting errors. 我尝试了loadXML()和DOMDocument :: getElementsByTagName()的变体,但一直出错。 The XML in the page above appears to be well formed. 上一页中的XML看起来格式正确。

Thanks in advance! 提前致谢!

You could use SimpleXML to load a remote url . 您可以使用SimpleXML 加载远程URL

Then you can use a foreach to loop through all of the data. 然后,您可以使用foreach遍历所有数据。

Example: 例:

$context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'https://www.predictit.org/api/marketdata/all/';

$xml = file_get_contents($url, false, $context);
$elements = simplexml_load_string($xml);

foreach ($elements->Markets->MarketData as $marketData) {

    echo $marketData->TickerSymbol . "<br>";

    foreach ($marketData->Contracts->MarketContract as $contract) {
        echo "-" . $contract->TickerSymbol . "<br>";
    }
}

Will result in: 将导致:

VAGOV17
-DEM.VAGOV17
-GOP.VAGOV17
NJGOV17
-DEM.NJGOV17
-GOP.NJGOV17
MAYOR.NYC2017
-BDB.MAYOR.NYC2017
-WEINER.MAYOR.NYC2017
-QUINN.MAYOR.NYC2017
-STRINGER.MAYOR.NYC2017

Etc.. 等等..

Here is your Code. 这是您的代码。 Let me know working or not 让我知道工作与否

Hoping your xml file called 'all.xml' 希望您的xml文件名为“ all.xml”

<?php 

if (file_exists('all.xml')) 
{
    $xml = simplexml_load_file('all.xml');

     foreach ($xml as $k)
     {
        $tag =  $k->getName();
        $i = 0;
        foreach($xml->$tag->children() as $key)
        {
            $marketData = $key->getName();

            echo $xml->$tag->MarketData[$i++]->TickerSymbol . "<br>";
        }
     }
}
else
 {
    exit('Failed to open all.xml.');
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM