2017-10-09 65 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,保存在同一個目錄下,然後運行這段代碼,如果你仍然收到錯誤,請發佈這個錯誤的圖片。在我的情況下,它的工作很好,如果你需要照片,我可以給你。 –

相關問題