2010-01-15 106 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 />'; 
}