2014-02-18 51 views
0

這是我的XML結構的所有節點:顯示在一個XML

<?xml version="1.0"?> 
    <Module_Files> 
     <Category name="test1"> 
      <file lang="fr"> 
       <title>Menu</title> 
       <description>Menu list</description> 
       <path>menu.pdf</path> 
      </file> 
     </Category> 
     <Category name="test2"> 
      <file lang="fr"> 
       <title>Spa</title> 
       <description>Services offered in our Spa</description> 
       <path>spa.pdf</path> 
      </file> 
      <file lang="en"> 
       <title>Gym</title> 
       <description>rate</description> 
       <path>gym.pdf</path> 
      </file> 

     </Category> 
    </Module_Files> 

我想每個類別<Category>所有文件<file>。但我只設法得到第一個文件。我要顯示這樣的(我採取的例子test2的範疇):

標題:水療,說明:在我們的水療中心,路徑所提供的服務:spa.pdf

標題:健身房,說明:速度,道:gym.pdf

這是我的代碼:

$categoryConfig = $xmlFile->xpath("//Category[@name='" . $categorySelected . "']/config"); 

foreach ($categoryConfig as $key => $value) 
{ 
    $rightPanel .= $key . ":" . $value; 
} 

而這就是我得到這個代碼:

0:1:

var_dump($categoryConfig) =

array(2) { 
    [0]=> object(SimpleXMLElement)#26 (4) 
     { ["@attributes"]=> array(1) { ["lang"]=> string(2) "fr" } 
     ["title"]=> string(3) "Spa" ["description"]=> string(35) "Services offered in our Spa" ["path"]=> string(7) "spa.pdf" } 

    [1]=> object(SimpleXMLElement)#27 (4) 
     { ["@attributes"]=> array(1) { ["lang"]=> string(2) "en" } 
     ["title"]=> string(14) "Gym" ["description"]=> string(29) "Rate" ["path"]=> string(18) "gym.pdf" } 
    } 
+0

您與特定的'name'屬性選擇'Category'的'config'子元素。它與您的示例中的XML不匹配(不包含「config」元素)。要輸出每個'Category'中的每個'file',你需要兩個循環,而不是一個循環。外部的類別和內部的每個類別的文件。如果你想輸出文件獨立的類別,你可以選擇並直接迭代它們。 – ThW

回答

0

嵌套與children() - 方法循環將做到這一點:

$xml = simplexml_load_string($x); // assume XML in $x 

$catname = "test2"; 
// select all <file> under <category name='test2'> 
$files = $xml->xpath("/*/Category[@name='$catname']/file"); 

foreach ($files as $file) { 
    foreach ($file->children() as $key => $value) 
     echo $key . ': ' . $value . PHP_EOL; 
    echo PHP_EOL; 
}   

由於THW的評論所指出的,你xpath表達式不匹配,因爲xml中沒有<config>。我在這裏調整到<file>

看到它的工作:https://eval.in/102766