2012-10-19 59 views
1

嘿我有一個包含類似這樣的一些信息的XML文件:簡單的XML和PHP

<root> 
<library> 
    <name>TestName1</name> 
    <location>TestLocation1</location> 
</library> 
<library> 
    <name>TestName2</name> 
    <location>TestLocation2</location> 
</library> 
<book> 
    <name>Book1</name> 
    <author>Author1</author> 
</book> 
<book> 
    <name>Book2</name> 
    <author>Author2</author> 
</book> 
</root> 

我所做的就是創建一個能夠存儲的信息的數組的數組。然而,我的問題在於試圖只返回書籍或圖書館。

$xml = "libraries.xml"; 
$array_libraries = array(); 
$library = simplexml_load_file($xml); 

foreach($library as $get_library) { 
$name = $get_library->name; 
$location = $get_library->location; 
array_push($array_albums, array($name, $location)); 
} 

我想保留的書籍和圖書館在同一個文件,如果可能的,但我只希望把庫入陣,謝謝提前:-)

回答

0

你定義一個數組,

$array_libraries = array(); 

然後你在另一個數組推

array_push($array_albums, array($name, $location)); 

試着推了之前聲明數組:

array_push($array_libraries, array($name, $location)); 
2

您只需循環遍歷這些庫,而不僅僅是整個XML。

變化:

foreach($library as $get_library) { 

foreach($library->library as $get_library) { 

作爲一個方面說明,SimpleXML的是不是最大的處理XML。請使用DOMDocument來代替。

+0

DOM優於SimpleXML是非常有趣的事情。在我看來,對於簡單的只讀操作,SimpleXML在它上面做了什麼。 – IMSoP

0

如果只想庫這可能是有用的

$xml = "libraries.xml"; 
$array_libraries = array(); 
$array_albums = array(); 
$library = simplexml_load_file($xml); 

foreach($library as $get_library => $x) { 
    $name = $x->name; 
    $location = $x->location; 
    if ($get_library === 'library') { 
     array_push($array_libraries, array($name, $location)); 
    } 
    if ($get_library === 'book') { 
     array_push($array_albums, array($name, $location)); 
    } 
} 

,你只保留,如果和刪除/發表評論另外一個,如果你想兩者,那麼你已經有一個例子工作。

再見