2011-06-14 50 views
0

我目前正在嘗試從SIMPLEXML/XPATH查詢生成的數組中提取值。如果任何人都可以看一看,我將不勝感激。從Xpath查詢生成的陣列 - 試圖提取數據

我只是想提取ReclaimDate。我已經嘗試了幾個功能和一些建議this post沒有運氣。

Array 
(
[0] => Array 
    (
     [0] => SimpleXMLElement Object 
      (
       [@attributes] => Array 
        (
         [ReclaimDate] => 05/15/2008 
         [ReclaimPrice] => 555555555 
         [_Owner] => ownername 
        ) 

      ) 

    ) 
+0

你可能尋找類似'(串)$ MYVAR [0] [0] [ 'ReclaimDate']' - 如果你能提供一個簡短的例子doc和示例代碼,那麼提供可保證工作的解決方案會更容易。順便說一句,你鏈接的SO帖子看起來不是關於SimpleXML的,所以它可能沒有幫助。 – 2011-06-14 02:58:10

+1

您可以發佈響應數據(或其URL)和/或您用來將此數據作爲SimpleXMLElement使用的PHP嗎? – 2011-06-14 02:59:01

回答

0

感謝Frank Farmer和Dan Beam解決了這個問題。

這工作:echo (string)$check_reo[0][0]['ReclaimDate']

對於任何人正在使用的SimpleXML和XPath提取並從一個XML文件,這是什麼工作對我來說寫一些基本的邏輯。

$xmlstring = <<<XML <?xml version='1.0' standalone='yes'?> <YOURXMLGOESHERE>TEST</YOURXMLGOESHERE> XML;

$xpathcount = simplexml_load_string($xmlstring); // Load XML for XPATH Node Counts

$doc = new DOMDocument(); // Create new DOM Instance for Parsing

$xpathcountstr = $xpathcount->asXML(); // Xpath Query

$doc->loadXML($xpathcountstr); // Load Query Results

$xpathquery = array($xpathcount->xpath("//XMLNODEA[1]/XMLNODEB/*[name()='KEYWORDTOCHECKIFXMLCEXISTS']"));

print_r ($xpathquery) // CHECK Array that is returned from the XPATH query

`陣列 ( [0] =>數組 ( [0] => SimpleXMLElement對象 ( [@屬性] =>數組 ( [ReclaimDate] => 2008年5月15日 [ReclaimPrice] => 555555555 [_Owner] => OWNERNAME )

 ) 

) // Array RETURNED` 

echo (string)$xpathquery[0][0]['ReclaimDate'] // EXTRACT THE VALUE FROM THE ARRAY COLUMN;

本網站幫助我更好地瞭解XPATH如何通過比我以前所知的更多功能輕鬆搜索XML。

http://zvon.org/xxl/XPathTutorial/Output/examples.html

下面是簡單的XML功能爲我工作

$xmlread = simplexml_load_string($xmlstring, "simple_xml_extended");

`simple_xml_extended類擴展的SimpleXMLElement {//讀取XML並獲得屬性 公共職能屬性($名){ foreach($ this-> Attributes()as $ key => $ val){ if($ key == $ name) return(string)$ val;

} 
} 

}`

下面是函數動作與屬性基於XML提取單值時,會導致

$GETVAR1 = $xmlread->XMLNODE1->XMLNODE2->XMLNODE3->XMLNODE4->XMLNODE5[0]->Attribute('XMLNODE5ATTRIBUTE');

這可能不是最有效的還是最好的方法,但其什麼結束了爲我工作。希望這可以幫助那些仍然不清楚SIMPLEXML和XPATH的人。

一個額外的鏈接,進一步瞭解:http://www.phpfreaks.com/tutorial/handling-xml-data

+0

你應該接受任何答案。 – benmarks 2012-08-10 23:02:41