2011-04-08 197 views
7

說我有這個下面的XML結構:的SimpleXML獲取節點值

<?xml version="1.0" encoding="UTF-8"?> 
<main> 
    <parent> 
     <child1>some value</child1> 
     <child2>another value</child2> 
    </parent> 
</main> 

我做了XML的一個變量,現在我想child1的價值,所以我使用的SimpleXML:

$xml = new SimpleXMLElement($xml); 
$this->xmlcode = (string) $xml->main->parent->child1; 

但是我收到這條消息:注意:試圖在/x.php上獲取非對象的屬性x

我也試過用$ xml-> parent-> child1,但沒有成功。

任何??

+7

發現*嘆*這必須是最常見的錯誤有史以來之一。將XML文檔加載到SimpleXmlElement中時,根節點是SimpleXmlElement,例如, '$ xml =

'。 – Gordon 2011-04-08 10:35:27

+1

感謝Gordon的解釋。 – priktop 2011-04-08 10:37:29

回答

22
$xml = new SimpleXMLElement($xml); 
$this->xmlcode = (string) $xml->parent[0]->child1; 
+0

謝謝,明白了:) – priktop 2011-04-08 10:35:47

+1

問題通過添加類型(字符串)(float)來解決。 – JelleP 2015-07-21 06:38:37

2

使用XPath與PHP的SimpleXMLElement對象的一個​​很好的例子可以在這裏 http://www.php.net/manual/en/class.simplexmlelement.php#95229

// Find the topmost element of the domDocument 
$xpath = new DOMXPath($xml); 
$child1 = $xpath->evaluate('/main/parent/child1')->item(0); 
+3

SimpleXml可以執行XPath查詢。沒有必要轉換到DOM來這樣做。使用評估的唯一好處是在獲得輸入結果時,您的示例顯然不適用。 – Gordon 2011-04-08 10:34:10