2012-09-17 76 views
0

我用PHP製作了一個簡單的apk上傳器,我想解析清單屬性表格AndroidManifest.xml,但我得到了以下錯誤,任何想法!?解析AndroidManifest屬性

Fatal error: Call to a member function xpath() on a non-object in E:\AppServ\www\apkUploader\mainApi.php on line 21 

線21 =$versionName = $xml->xpath('/manifest/@android:versionName');

的源代碼:

/* For Apk File */ 

if (($_FILES["mFile"]["type"] == "application/vnd.android.package-archive") || ($_FILES["mFile"]["type"] == "application/octet-stream")) 
{ 
    if ($_FILES["mFile"]["error"] > 0) 
     { 
      echo "Return Code: " . $_FILES["mFile"]["error"] . "<br />"; 
     } 
    else 
     { 
      echo "Upload: " . $_FILES["mFile"]["name"] . "<br />"; 
      echo "Type: " . $_FILES["mFile"]["type"] . "<br />"; 
      echo "Size: " . ($_FILES["mFile"]["size"]/1024) . " Kb<br />"; 
      echo "Temp file: " . $_FILES["mFile"]["tmp_name"] . "<br />"; 
      error_reporting(E_ERROR | E_PARSE); 
      $dom = new DOMDocument(); 
      $dom->load('AndroidManifest.xml'); 
      $xml = simplexml_import_dom($dom); 
      $versionName = $xml->xpath('/manifest/@android:versionName'); 
      $versionCode =$xml->xpath('/manifest/@android:versionCode'); 
      $package = $xml->xpath('/manifest/@package'); 
      echo "VERSION NAME :".$versionName[0]->versionName."<br/>"; 
      echo "VERSION CODE :".$versionCode[0]->versionCode."<br/>"; 
      echo "VERSION PAC :".$package[0]->package."<br/>"; 
      if (file_exists("upload/" . $_FILES["mFile"]["name"])) 
      { 
       echo $_FILES["mFile"]["name"] . " already exists. "; 
      } 
      else 
      { 
       move_uploaded_file($_FILES["mFile"]["tmp_name"], 
       "upload/" . $_FILES["mFile"]["name"]); 
       echo "Stored in: " . "upload/" . $_FILES["mFile"]["name"]; 
      } 
     } 
    } 
else 
    { 
     echo "Invalid file"; 
    } 

回答

1

它看起來像$xml = simplexml_import_dom($dom);沒有返回一個有效的對象。這通常意味着文件不能被加載或解析。

不要忘記檢查,如果有一個錯誤:

$xml = simplexml_import_dom($dom); 
if (!$xml) 
{ 
    // An error occurred 
} 
+0

+1,謝謝你提到它,我怎樣才能得到一個apk文件裏面的XML(一種ZIP文件)讀它? – iSun

+0

嗯,我想你應該發表關於這個問題的另一個問題(我不知道答案,對不起)。 – Dalmas

+0

好的,無論如何謝謝你:-) – iSun