2016-05-30 212 views
0

得到的字符串我有我的xml文件似乎無法從simpleXMLobject

<names> 
    <person> 
     <name>John</name> 
     <alias> 
      <part>Joe</part> 
      <part>Foo</part> 
     </alias> 
    </person> 
</names> 

我保存爲$xml

foreach($xml as $person) 
    var_dump($person->name); 

上面的代碼返回

object(SimpleXMLElement)#7 (1) { 
    [0]=> 
    string(4) "John" 
} 

,而不是僅僅

string(4) "John" 

有了實際回報它給,我會假設加入[0]該變量的結束會給我正確的回報,但它返回完全相同的東西。我曾嘗試加入[0],["0"],->0,->"0",並且沒有任何效果。最後2次嘗試給了我一個解析錯誤,而前2次給了我與原始相同的響應。

如何從object(SimpleXMLElement)內部獲得string(4) "John"

+4

通過將其明確地強制轉換爲字符串:'的var_dump((字符串)$人 - >名);' –

+0

'$ person-> name - > __ toString()'但是你不能害怕這個,php會把它轉換成字符串。用於考試測試'echo $ person-> name' – splash58

+0

@MarkBaker說的。或者簡單地'echo'-ing或'print',它會調用魔術方法'__toString()'。 https://3v4l.org/lrPMr – Havelock

回答

1

這是因爲XML是一種資源,即:

$xml = '<names> 
     <person> 
      <name>John</name> 
      <alias> 
       <part>Joe</part> 
       <part>Foo</part> 
      </alias> 
     </person> 
    </names>'; 

$parsed = simplexml_load_string($xml); 

var_dump($parsed->getName()); 

將輸出names,可見,該元件/層你是在被命名爲names

所以parsed-> person-> name會給你一個資源。如果你要刪除的資源,只是訪問該值,則需要將其轉換爲字符串:

var_dump((string)$parsed->person->name);