2010-01-15 162 views
1

我已經搜索在谷歌的一切,還是我不能似乎找到了一個解決方案。基本上我即將幫助我的朋友爲他的ftp創建一個php前端。PHP和XML解析

的FTP細節都保存在XML。所以我必須解析它到一個PHP。

<FileZillaServer> 
<Users> 
<User Name="anonymous"> 
<Option Name="Pass">aaaaaa</Option> 
<Option Name="Group"/> 
<Option Name="Bypass server userlimit">0</Option> 
<Option Name="User Limit">0</Option> 
<Option Name="IP Limit">0</Option> 
<Option Name="Enabled">1</Option> 
<Option Name="Comments"/> 
<Option Name="ForceSsl">0</Option> 
<IpFilter> 
<Disallowed/> 
<Allowed/> 
</IpFilter> 
<Permissions> 
<Permission Dir="C:\xampp\anonymous"> 
<Option Name="FileRead">1</Option> 
<Option Name="FileWrite">0</Option> 
<Option Name="FileDelete">0</Option> 
<Option Name="FileAppend">0</Option> 
<Option Name="DirCreate">0</Option> 
<Option Name="DirDelete">0</Option> 
<Option Name="DirList">1</Option> 
<Option Name="DirSubdirs">0</Option> 
<Option Name="IsHome">1</Option> 
<Option Name="AutoCreate">0</Option> 
</Permission> 
<Permission Dir="C:\xampp\anonymous\incoming"> 
<Option Name="FileRead">1</Option> 
<Option Name="FileWrite">1</Option> 
<Option Name="FileDelete">0</Option> 
<Option Name="FileAppend">0</Option> 
<Option Name="DirCreate">0</Option> 
<Option Name="DirDelete">0</Option> 
<Option Name="DirList">1</Option> 
<Option Name="DirSubdirs">0</Option> 
<Option Name="IsHome">0</Option> 
<Option Name="AutoCreate">0</Option> 
</Permission> 
</Permissions> 
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0"> 
<Download/> 
<Upload/> 
</SpeedLimits> 
</User> 
</Users> 
</FileZillaServer> 

基本上面是來自XML的示例內容。我需要知道如何解析內容並在PHP中顯示。

只是爲了顯示名稱和通過。

謝謝

回答

2
$xml = "your xml string"; 
$xml_object = simplexml_load_string($xml); 

$xml_file = "path/to/file"; 
$xml_object = simplexml_load_file($xml_file); 

閱讀上通過生成的XML對象這裏訪問數據:http://www.php.net/manual/en/book.simplexml.php

5

有,你可以用幾個PHP的XML處理模塊。 DOMDocument是,如果你正在處理有效的XML,你似乎是一個很好的一個。

下面的代碼將解析您的文檔和輸出各<User>標籤中找到的用戶名和密碼。

$doc = new DOMDocument(); 
$doc->load('test.xml'); 
$userNodes = $doc->getElementsByTagName('Users'); 
foreach($userNodes as $user) { 
    foreach($user->childNodes as $userData) { 
    if ($userData->nodeName == 'User') { 
     echo "User name: "; 
     echo $userData->attributes->getNamedItem('Name')->nodeValue; 
     foreach($userData->childNodes as $n) { 
     if ($n->nodeName == 'Option' && $n->attributes->getNamedItem('Name')->nodeValue == 'Pass') { 
      echo " Password: ".$n->nodeValue."\n"; 
      break; 
     } 
     } 
    } 
    } 
} 
2

您可以使用這個簡單的代碼來提取您的值。

$xml = simplexml_load_string(file_get_contents('xml.xml')); 

//now extract all the variables are extracted below 
$i = 0; 

foreach($xml->Users->User as $key=>$myuser) { 
    echo 'Name: '.$myuser->Name.'<br />'; 
}