2011-12-20 45 views
2

我一直在試圖獲得的SimpleXMLElement使用每php.net例子下面的代碼提取vsingle值來回一個XML文件中的元素:提取使用的SimpleXMLElement

$resp = new SimpleXMLElement($xml); 
foreach($resp->SESSION_LIST->SESSION as $sess){ 
    $type = $sess->TRACKING->TYPE; 
} 

當我這樣做,返回值總是另一個簡單的XML對象,而我堅持如何獲得我正在尋找的值。有人能給我一個正確的方向嗎?

這是我使用的XML字符串。它可以有多個會話屬性:

$xml = <<<XML 
<?xml version="1.0"?> 
    <FREIGHTVIEW> 
     <SESSION_LIST> 
      <SESSION id="529075"> 
       <SESSION_ID>529075</SESSION_ID> 
       <LABEL>116800</LABEL> 
       <INTEGRATION_REFERENCE_NUMBER>WDLSTRFDTS</INTEGRATION_REFERENCE_NUMBER> 
       <TRACKING> 
       <TYPE>provider assigned</TYPE> 
       <EVENT_DATETIME>03/01/11 02:07:59 PM</EVENT_DATETIME> 
       <TIMEZONE /> 
       <USER_NAME>Dispatch Team</USER_NAME> 
       <COMPANY_NAME>M&amp;W Distribution</COMPANY_NAME> 
       <RECORDED_DATETIME>03/01/11 02:07:59 PM</RECORDED_DATETIME> 
       <SOURCE /> 
      </TRACKING> 
      <QUOTE id="5173468"> 
       <QUOTE_ID>5173468</QUOTE_ID> 
       <CARRIER type="Private"> 
        <NAME>- FedEx Freight Priority -</NAME> 
        <CARRIER_REFERENCE_NUMBER>FXFE</CARRIER_REFERENCE_NUMBER> 
        <CONTACT>- FedEx Freight Priority -</CONTACT> 
        <EMAIL /> 
        <PHONE></PHONE> 
       </CARRIER> 
       <TOTAL_AMOUNT>262.57</TOTAL_AMOUNT> 
       <ACCESSORIALS> 
        <ACCESSORIAL> 
         <NAME>fuel surcharge</NAME> 
         <AMOUNT>79.47</AMOUNT> 
        </ACCESSORIAL> 
        <ACCESSORIAL> 
         <NAME>delivery appointment request</NAME> 
         <AMOUNT>0.00</AMOUNT> 
        </ACCESSORIAL> 
        <ACCESSORIAL> 
         <NAME>line haul</NAME> 
         <AMOUNT>183.10</AMOUNT> 
        </ACCESSORIAL> 
       </ACCESSORIALS> 
       <EQUIPMENT> 
        <MODE>ltl</MODE> 
        <TYPE></TYPE> 
       </EQUIPMENT> 
       <PICKUP_DATE></PICKUP_DATE> 
       <ESTIMATED_DELIVERY_DATE></ESTIMATED_DELIVERY_DATE> 
       <REFERENCE_ID>37307086</REFERENCE_ID> 
       <QUOTE_GOOD_UNTIL></QUOTE_GOOD_UNTIL> 
       <QUOTE_TYPE>instant ltl</QUOTE_TYPE> 
       <COMMENTS></COMMENTS> 
       <QUOTE_STATUS>assigned</QUOTE_STATUS> 
      </QUOTE> 
     </SESSION> 
    </SESSION_LIST> 
</FREIGHTVIEW> 
XML; 
+0

你知道什麼是真正的*** **嚇壞用武之地了......告訴我們這元素你真正想要的。 – Layke 2011-12-20 22:00:11

+0

SESSION元素,而不是屬性。 :) – DanMan 2011-12-20 22:04:06

+0

因爲我沒有澄清「我真正想要哪個嚇人的元素」而表示歉意,它是元素中的值。我認爲這將從這個例子中清楚。我將確保下一次非常具體。 – radi8 2011-12-21 13:16:45

回答

2

您需要將對象強制轉換爲字符串:

$type = (string) $sess->TRACKING->TYPE; 
+0

謝謝你。我正在把頭髮撕掉。 [PHP文檔](http://ie2.php.net/manual/en/simplexml.examples-basic.php)從來沒有提到它,這是不尋常的。 PHP文檔通常相當不錯。 – TRiG 2012-03-06 17:02:29

+1

我實際上已經將這個報告爲PHP文檔中的一個錯誤。 – TRiG 2012-03-06 17:15:08