2017-10-09 61 views
0

我想编写一个PHP脚本提取从以下外部页面中的所有元素(只有股票代码): https://www.predictit.org/api/marketdata/all/如何使用PHP从外部XML文件提取所有“TickerSymbol”元素?

所以在写这篇文章的时候,输出会

VAGOV17

DEM.VAGOV17

GOP.VAGOV17

NJGOV17

...

我试过的loadXML()和DOM文档的getElementsByTagName ::()的变动,只是不停收到错误。上面的页面中的XML看起来是正确的。

在此先感谢!

+0

你尝试过什么?你得到它的确切的错误,而这样做?这不是免费的编码服务。 – Mjh

+0

'$ xml ='<?xml version =“1.0”encoding =“utf-8”?>'。@ file_get_contents('https://www.predictit.org/api/marketdata/all/'); $ dom = new DOMDocument; $ dom - > loadXML($ xml); $ books = $ dom-> getElementsByTagName('TickerSymbol'); foreach($ books as $ book){ echo $ book-> nodeValue,PHP_EOL; } DOMDocument :: loadXML():开始标记预期,'<'实体中找不到,行:1在test_20171008.php上行26 –

回答

0

你可以使用SimpleXMLload a remote url xml文件。

然后你可以使用foreach循环所有的数据。

例子:

$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>"; 
    } 
} 

会导致:

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

等。

+0

这工作。非常感谢你!! –

-1

这是你的代码。让我知道,工作或没有

,祝你所谓的 '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.'); 
} 
+0

现在检查它的工作.. –

+0

恐怕它没有'工作。实际上,当我使用loadXML()时,我的原始代码中出现了类似的错误。 警告:使用simplexml_load_file():A.XML:1:分析器错误:开始标记预期, '<' 在test_20171009.php没有发现在第4行 警告:使用simplexml_load_file():{ “市场”:[{ “ID” :2404, “名”:“哪一方将赢得2017年弗吉尼亚gubernator在test_20171009.php第4行 警告:使用simplexml_load_file():^上线test_20171009.php 4 警告:的foreach提供了无效的参数()在test_20171009.php上第6行 –

+0

我做的是首先我把你的xml文件保存为all.xml,保存在同一个目录下,然后运行这段代码,如果你仍然收到错误,请发布这个错误的图片。在我的情况下,它的工作很好,如果你需要照片,我可以给你。 –

相关问题