我是PHP的初学者。我有一个XML文件。我想搜索一个具有name
属性值的节点,并将其子节点的文本值存储到变量中。我怎样才能用PHP代码做到这一点。
示例。
<Server>
nbsp nbsp nbsp;<Server1>
nbsp nbsp nbsp nbsp nbsp nbsp<ipaddress name="10.3.0.5">
nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp<username>user</username>
nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp<password>password</password>
nbsp nbsp nbsp nbsp nbsp nbsp</ipaddress>
nbsp nbsp nbsp;</Server1>
</Server>
这是我正在使用的XML文件。此XML文件中的父节点<Server>
将包含许多<Server1>
子节点。这里,我想在用关键字10.3.0.5
(即节点ipaddress
的id
属性值(搜索时,将节点<username>
(用户(和<password>
(密码(内部的数据分成两个不同的变量。请帮我提供一个不错的PHP代码。
让我先重述一下我所理解的问题:如果服务器元素有几个子元素,每个子元素都有一个由ip地址标识的子元素,那么如何提取给定ip地址的用户名和密码?
如果这确实是你的问题,我相信下面的解决方案可以为你工作:
<?php
// Declare which ip address you want to get more information about
$ip_address_to_find = '10.3.0.5';
// Full xml string that you need to search through (this is an imagined example. The last element in this xml is the one we're going to find)
$xml_string = '
<Server>
<Server1>
<ipaddress name="10.3.0.1">
<username>username1</username>
<password>password1</password>
</ipaddress>
</Server1>
<Server2>
<ipaddress name="10.3.0.2">
<username>username2</username>
<password>password2</password>
</ipaddress>
</Server2>
<Server3>
<ipaddress name="10.3.0.3">
<username>username3</username>
<password>password3</password>
</ipaddress>
</Server3>
<Server4>
<ipaddress name="10.3.0.4">
<username>username4</username>
<password>password4</password>
</ipaddress>
</Server4>
<Server5>
<ipaddress name="10.3.0.5">
<username>username5</username>
<password>password5</password>
</ipaddress>
</Server5>
</Server>';
// Use simplexml to make an object out of it
$xml_object = simplexml_load_string($xml_string);
// Cycle through the object until you find a match
foreach($xml_object as $server){
if($server->ipaddress->attributes()->name == $ip_address_to_find ){
$username = $server->ipaddress->username;
$password = $server->ipaddress->password;
// Now use $username and $password however you want
// for example:
echo 'For the server with IP address: '.$ip_address_to_find.', the username is: '.$username.', and the password is: '.$password.'.'.PHP_EOL;
}
}
?>