2014-05-20 53 views
0

我想循環扔在PHP中的以下xml字符串,但無法獲得使用xmlsimpleelement分析器時的演員和電子書的childelements。從孫子XMLSimpleElement

<?xml version="1.0" encoding="UTF-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:ff="some uri"> 
    <title>Fulfillments</title> 
    <link rel="self" type="application/atom+xml" href="some uri" title="...." /> 
    <updated>2014-05-20T10:10:05Z</updated> 

    <entry> 
     <title>e90e7ea4e7ea4-8b6a-4355-a9e7-a448c8435126</title> 
     <id>urn:uuid:e90e7ea4-8b6a-4355355-a9e7-a448c8435126</id> 
     <updated>2014-05-20T10:10:05Z</updated> 
     <summary>sometext</summary> 
     <ff:created>2014-05-07T06:43:32Z</ff:created> 
     <ff:modified>2014-05-07T06:43:32Z</ff:modified> 
     <ff:price>50</ff:price> 
     <ff:orderid>randomorderhash</ff:orderid> 
     <ff:drmType>4</ff:drmType> 
     <ff:actor> 
      <ff:id>12345</ff:id> 
      <ff:name>Actor Name</ff:name> 
     </ff:actor> 
     <ff:ebook> 
      <ff:id>somerandomidhash</ff:id> 
      <ff:ean>12345678</ff:ean> 
      <ff:publisher>905555</ff:publisher> 
      <ff:version>1</ff:version> 
      <ff:drmType>4</ff:drmType> 
      <ff:format>1</ff:format> 
      <ff:size>750319</ff:size> 
     </ff:ebook> 
    </entry> 

    <entry> 
     .... 

我phpcode看起來是這樣的:

$data = simplexml_load_string($xmlstr); 
$result = array(); 
foreach ($data->children() as $entries) { 
    $item = array(); 
    foreach($entries->children() as $key => $entry) { 
     $item[$key] = $entry; 
    } 

    foreach($entries->children('ff', true) as $key => $entry) { 
     switch ($key) { 
      case 'actor': 
       // what do i write here to get the children? 
      break; 
      case 'ebook': 
       // what do i write here to get the children? 
      break; 
      default: 
       $item[$key] = $entry; 
      break; 
     } 
    } 
    $result[] = $item; 
} 

我試着兩個孩子()和屬性(),但仍然很難獲得既是演員又是電子書的子元素。

任何幫助非常感謝!

回答

1

作品在這裏:http://ideone.com/GfmqQh

foreach($entries->children('ff', true) as $key => $entry) { 
    switch ($key) { 
     case 'actor': 
      // what do i write here to get the children? 
      var_dump($entry->children('ff', true)->name); 
      //if case you like get attributes... $entry->attributes(), return array of attributes 
      echo "actor\n"; 
     break; 
     case 'ebook': 
      // what do i write here to get the children? 
      echo "ebook\n"; 
     break; 
     default: 
      echo "$key default\n"; 
      $item[$key] = $entry; 
     break; 
    } 
} 
$result[] = $item; 
+0

我不知道我怎麼錯過了,謝謝! – Harald