2011-12-26 25 views
1

您好我有以下簡單的XML對象的XML標記名稱:怎樣用簡單的XML對象

[ad] => Array 
    (
     [0] => SimpleXMLElement Object 
      (
       [title] => <b>Title: Mysql 1</b> 
       [abstract] => Abstract: Mysql 1 
       [url] => www.Mysql.com 
       [rurl] => http://sample/xtrack.php?rurldata=yes 
       [iurl] => http://sample.com/ 
       [bid] => 0.0880 
      ) 

     [1] => SimpleXMLElement Object 
      (
       [title] => <b>Title: Mysql 2</b> 
       [abstract] => Abstract: Mysql 2 
       [url] => www.Mysql.com 
       [rurl] => http://sample/xtrack.php?rurldata=yes 
       [iurl] => http://sample.com/ 
       [bid] => 0.1980 
      ) 
    ) 

我想創建這樣的數組。我想在的foreach這樣

foreach($xmlString->ad as $key){ 
     foreach($key as $key2 => $val2){ 
      $adData[$counter][$key2] = $val2; 
     } 
      $counter++; 
} 

,但我得到的結構是這樣的:

Array 
    (
    [0] => Array 
    (
     [title] => SimpleXMLElement Object 
      (
       [0] => <b>Title: Mysql 1</b> 
      ) 

     [abstract] => SimpleXMLElement Object 
      (
       [0] => Abstract: Mysql 1 
      ) 

     [url] => SimpleXMLElement Object 
      (
       [0] => www.Mysql.com 
      ) 

     [rurl] => SimpleXMLElement Object 
      (
       [0] => http://sample/xtrack.php?rurldata=yes 
      ) 

     [iurl] => SimpleXMLElement Object 
      (
       [0] => http://sample.com/ 
      ) 

     [bid] => SimpleXMLElement Object 
      (
       [0] => 0.0880 
      ) 

    ) 
    . 
    . 
    .So on 

現在我知道,$爲key2是一個對象。我如何只能檢索標籤名稱?如何去做這件事?

回答

1

該波紋管例子可以幫助你..

XML文件:student.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <students> 
     <student> 
     <name>Hearaman</name> 
     <age>24</age> 
     <email>[email protected]</email> 
     <address>Bangalore, India</address> 
    </student> 
</students> 

PHP代碼:

<?php 
    $xml = simplexml_load_file("student.xml"); 

    echo "Parent Tag = ". $xml->getName() . "<br />"; 

    foreach($xml->children()->children() as $child) 
     { 
     echo $child->getName() . ": " . $child . "<br />"; 
     } 
    ?> 
1

可以使用SimpleXmlEmement::getName方法獲取名稱

foreach($xmlString->ad as $key){ 
    echo $key->getName() . '<br/>'; 
} 
+0

如果我這樣做: '$ ADDATA [$計數器] [$ key2->的getName()] = $值2;' 我得到錯誤: '調用一個非對象的成員函數getName()在' 但它是一個對象 – Shades88 2011-12-26 11:59:31

+0

@ Shades88:錯誤消息說明你試圖使用非對象作爲對象,你確定'$ key2'是設置正確 – RageZ 2011-12-26 12:01:38

+0

ohhh我現在明白了。 $ key2是一個字符串。但是我得到的$ val2是一個對象。不明白這裏發生了什麼 – Shades88 2011-12-26 12:05:39

1
 
foreach ($xmlString->children() as $child) 
{ 
    $tagsArr[] = $child->getName(); 
} 
+0

請提供額外的信息,除了你的代碼(即使這可能已經回答了這個問題)。沒有一些解釋,初學者可能無法理解你的代碼。 – fuzzy 2011-12-26 19:06:32

1

試試這個:

$result=array(); 
foreach($add as $key=>$val){ 
    $result[]['title'] = (string)$add[$key]->title; 
    $result[]['abstract'] = (string)$add[$key]->abstract; 
    $result[]['url'] = (string)$add[$key]->url; 
    $result[]['rurl'] = (string)$add[$key]->rurl; 
    $result[:]['iurl'] = (string)$add[$key]->iurl; 
    $result[]['bid'] = (string)$add[$key]->bid; 
} 
+0

我知道,我可以做到這一點。但我正在避免對索引名稱進行硬編碼。由於這個功能我想盡可能的推廣到 – Shades88 2011-12-26 12:11:59

+0

謝謝。我怎麼能忘記。類型轉換做了訣竅。 – Shades88 2011-12-26 12:15:39